Pugs t-shirts www.cafepress.com/pugscode | Pugs 6.2.9 released | pugscode.org | pugs.kwiki.org | paste: sial.org/pbot/perl6 | www.geeksunite.net
Set by stevan on 15 August 2005.
dudley vkon: last I heard, pmichaud (the guy writing PGE) had been swamped with $work 00:01
so PGE development has slowed down 00:02
stevan_ thinks maybe exposing luqui to functional languages was a bad idea ;)
vkon luqui: I was tempted adding proper code into PGE within parrot, but I fear I can't do all that properly... 00:03
stevan_ vkon: it is always worth a try 00:04
vkon: that's what VCS is good for,.. if it doesnt work... roll back
vkon :) may be I'll give it a try :)
stevan_ vkon: any code is good code at this point, especially if pmchaud is not able to work on it
Supaplex hears vkon crack all his nuckles *pop* *pop* 00:05
I'd say he's ready :)
luqui stevan_, why? 00:08
the fmap thing? 00:09
stevan_ yes :)
dont get me wrong,.. I like it
luqui I was thinking that before I was exposed to Haskell. I just knew what to call it now :-)
stevan_ and I like the general direction Haskell has made your brain go in
luqui does too :-p
fglock_ should learn Haskell some day 00:10
stevan_ I guess I mostly fear the "neverending spec"
luqui yeah, we've all been fearing that about perl 6
dudley Everyone should learn Haskell some day.
stevan_ bah, Haskell if just for PhDs who cant get real jobs ;)
luqui my guess is that perl 6's spec will be finished when the implementation becomes mature enough that people start using it a lot 00:11
it's happening now
stevan_ LOL
I've worked on projects like that
fglock_ I started a PhD - but unfortunately not in CS
stevan_ the implementation *is* the spec
fglock_: in what? 00:12
luqui oh, you mean perl 5?
:-)
fglock_ medicine
luqui that's not really what I was referring to
stevan_ Dr. fglock_ ?
fglock_ yes
my MsC was in CS
luqui it's just that once perl 6 gets mature, people will focus their energy on screwing with the language through modules rather than through politics
stevan_ does his best groucho marx imitation "Is there a doctor in the house".... 00:13
luqui it's a lot easier to just write a module that implements my proposals than trying to argue with Damian :-)
stevan_ luqui: isn't that how you do it now?
luqui yeah, I write perl 5 modules to show that it's doable and that I want it for perl 6
once I start writing the modules in perl 6 (which is too frustrating for me right now)
I really don't think I'll care whether it's in the "core language" 00:14
stevan_ fglock_: interesting education track there
fglock_ actually "off track"
luqui except for things that I think are flat-out wrong like the former MMD semantics
stevan_ luqui: well MMD semantics really have to be in the core IMO 00:15
you cant write them in modules and expect the performance to be acceptable
luqui wonders how things are faster when you don't write them in modules 00:16
I don't really see a difference
I just see the fact that I don't really care about performace
which is why C::MM::P is slow
but I believe that it could be made pretty fast 00:17
esp. with eg. a C backend
stevan_ luqui: well,.. I am making the assumption that if it is in the core, it can take advantage of certain optimizations
luqui ah yes
well, I want Perl 6 to be pluggable-optimizable too :-)
stevan_ luqui: well a proper type system would help make C:MM::Pure fast too :) 00:18
luqui so you'd just use an optimization module
stevan_, that's true
stevan_ ah yes... use optimizations;
luqui the problem with that is a lot of optimizations will be backend-dependent
but that's okay i guess
if you want it to be fast, you run the one for which all the optimization modules are written
and if you need to use a different backend, tough luck 00:19
stevan_ or write your own
:)
luqui yeah
bbiab
&
fglock_ thw wind stopped and the electricity is back :) 00:22
stevan_ fglock_: where are you in the world?
fglock_ Brasil
stevan_ ah
fglock_ near Uruguay 00:23
risse Can anyone help me understand how to send a normal UDP packet using only socket module? 02:20
obra try #perl or #perlhelp 02:21
new-b hello 05:00
luqui hello new-b
new-b hi luqui :)
gaal morning! 05:25
new-b hi gaal 05:29
gaal hola 05:30
oh, just read autrijus' last journal entry. ouch! 05:32
dduncan that bites ... did he not do CD backups or such? 07:28
gaal wow, this is really Bad Hardware Month. I just came to work after putting my home box in the shop 07:58
and my *work* computer is dead!
08:05 scw_ is now known as scw
luqui ?eval [1,2,3] >>+<< [4,5,6] 08:08
evalbot_6930 (5, 7, 9)
luqui ?eval [1,2,3] >>+<< [4,5,[6,7]]
evalbot_6930 (5, 7, 5.0)
gaal ?eval [1,2,3] >>+<< [4,5,[<a b c d>]] 08:10
evalbot_6930 (5, 7, 7.0)
gaal it's counting elements, isn't it.
luqui yeah 08:11
luqui is actually much happier with this than with the specified "deep" semantics 08:12
gaal oh, i didn't remember these existed. 08:13
luqui "these" meaning "deep semantics"?
gaal yes. what are they?
luqui well, basically you have the identity: 08:14
?eval 3 >>+<< [1,2,3]
evalbot_6930 (4, 5, 6)
luqui and then you just repeat that as you map deep structures
so [1,2,3] >>+<< [4,5,[6,7]] == [5,7,[9,10]]
recursively defined
gaal ah 08:15
luqui what bugs me about that is if you're programming generically, and you just *happen* to get a list in one of your lists, the semantics of hyper automatically change
gaal i haven't grokked perl 6 dereferencing at all yet.
yes.
luqui though I'm fine with deep semantics if they're swept off into a corner somewhere, like: my @a is deep 08:16
nothingmuch hi ho
luqui hi ho
gaal heya nuffin 08:17
nothingmuch had a nice weekend 08:22
hiking, and swimming, and other stuff
luqui++; # hyper + fmap 08:47
new-b hello 08:48
gaal so, i need some haskell help porting the following data structure from c: 10:39
a linked list, where data can only be *prepended* to the list, but different pieces of code receive different head pointers 10:40
so that earlier code can see something like <bar baz>, and the next piece of code will see <foo bar baz>, and so on; 10:41
data is otherwise immutable;
and this has to be really efficient in terms of memory.
any ideas about how to do this? 10:42
integral that sounds exactly like the built-in list [] 10:44
gaal is x:oldx efficient? 10:45
integral It's built as: data List a = Cons a (List a) | Nil, and in C would look a bit like: struct List { void *data; struct List *next } with something like next == NULL as Nil
gaal: yes, that just constructs a new Cons-cell
everything is passed around by pointer (essentially) 10:46
gaal good :)
I think it'll even be a [Int#] for real efficiency 10:47
this has to exist for every Exp, probably.
or whatever represents a "statement", i'm not sure.
autrijus gaal: you don't need the explicit "#" 11:26
GHC can optimize boxes away most of the time under -O
and with help from -funbox-strict-fields
gaal how come? the compiler needs to know whether to put a data* or a straight int, no?
autrijus gaal: also, got your mail, thanks! I can leave at Feb 1st or so
gaal: er, I was referring to Int# vs Int 11:27
they are of same precision; Int# just drops the box
gaal autrijus, yes: so isn't Int# a real int and an Int a pointer to an Integer struct of some sort?
re: Feb, cool! we still don't have final dates though. 11:28
for the conf that is.
integral but the optimiser knows that sometimes the semantics of a "real int" and a "pointer to an int" are the same 11:31
gaal I'm not really sure about it being an Int really. Ideally it should be a Val, so that lexical pragmas have total freedom in the kind of information they store for themselves, but that might be prohibitive. 11:32
...and so we might only allow a bit vector of fixed size, like in MJD's trial patch. 11:33
how do i actually put the list in Exp, btw? 11:34
and is it a problem that there's no Exp type that maps to a "statement" 11:37
?
11:45 Aankh|Clone is now known as Aankhen``
autrijus gaal: no, Int is just Int, with 32bit precition. so Int# is C's "int" and Int is a pointer to a struct with metadata part and a int 11:46
gaal: there is a Exp type, Stmt
that serves as a cons list of stmts
but, I gotta run for a bit and go back to do more data salvage
& 11:47
nothingmuch ciao
good luck
gaal autrijus: I saw Stmts. Where can I hang actual metadata though? Change "Stmts !Exp !Exp" to "Stmts !Pragmas !Exp !Exp" ? 12:25
autrijus gaal: either that or invent a "Pragma" node 12:47
Similar to Cxt and Pos
or you can hang pragma off the Syn node 12:48
Syn "pragma" (Val ...) ()
er
Syn "pragma" [Val ..., node]
improvise :)
gaal :) this unfortunately still doesn't feel natural to me, but sure :) 12:49
autrijus the "Syn"way is least natural and most broken 12:50
gaal but is it really supposed to be on a Syn node?
autrijus a Pragma node sounds best; you can then modify "unwind" to unwind Pragma
gaal ah
autrijus maybe we can unify Cxt, Pos and Pragma
into an "annotation" note type 12:51
Ann
Ann !Ann !Exp
data Ann = Pos ... | Cxt ... | Pragma ...
that may or may not be overkill
it's up to you :)
gaal here's hoping my computer comes out of the shop - i don't have anything that can build pugs atm :) 12:52
well there's feather
feather++
svnbot r6931 | iblech++ | * t/builtins/lists/{minmax,uniq}.t, 13:01
r6931 | iblech++ | t/builtins/arrays/{shift,pop,push,splice,unshift,end}.t:
r6931 | iblech++ | Added tests testing that 3.min/3.uniq/etc. does not work (but (3,).min etc.
r6931 | iblech++ | should, of course).
r6931 | iblech++ | * t/builtins/lists/empty_list_in_map.t: Added some more tests.
r6932 | iblech++ | * t/builtins/lists/one_elem_list_kv.t: Added try{...}-blocks so normal Pugs 13:25
r6932 | iblech++ | doesn't die.
r6932 | iblech++ | * t/builtins/control_flow/try.t: Added tests for @array = try {...} and %hash =
r6932 | iblech++ | try {...}. Also moved the tests testing whether return() inside
r6932 | iblech++ | try{...}-blocks works to the end, as PIL2JS runs them twice (detailled
r6932 | iblech++ | explanation in the test).
_sublime hello 14:02
how do i use a regular expression to break this string '2005/08/25 10:12:01 GMT' into parts so i can pass them into a function and create a date object.
QtPlatypus _sublime: What version of perl are you asking about? 14:03
_sublime the latest
QtPlatypus So perl5.something? 14:04
_sublime v5.8.7
yes
QtPlatypus nods "You need to ask in #perl"
_sublime ok 14:05
thanks
svnbot r6933 | fglock++ | * perl5/Array - fixed @a=(1,2,3) 14:20
r6933 | fglock++ | - the error was caused by the pre-processing of parameters in Array AUTOLOAD
r6934 | iblech++ | * Pugs.AST.Internals, Pugs.Bind: 14:26
r6934 | iblech++ | isNamed is set correctly now (i.e. it's False for normal positional
r6934 | iblech++ | parameters and True for "+" and "++" params).
r6934 | iblech++ | Testing t/subroutines/* indicates that this change is sane, i.e. all but one
r6934 | iblech++ | tests which worked previously still work.
r6934 | iblech++ | * src/perl6/Prelude.pm: Trivial change so the Prelude gets rebuild (probably
r6934 | iblech++ | needed because of the isNamed change).
r6934 | iblech++ | * t/subroutines/{splatty_in_caller_position,sub_ref}.t: unTODO/try
r6935 | iblech++ | * t/01-sanity/07-try.t: Fixed a test number. 14:32
r6935 | iblech++ | * t/data_types/lists.t: Added tests for \(...) (list of refs constructor) and
r6935 | iblech++ | pinged p6l again: www.nntp.perl.org/group/perl.perl6....uage/23085
r6935 | iblech++ | (See the =begin more-discussion-needed'ed tests.)
r6935 | iblech++ | * t/pugsbugs/io_finalize_part[12].t: skip if $*OS eq "browser";
r6935 | iblech++ | * PIL2JS: PIL::Params: Respect the (since r6934 working) isNamed field.
r6935 | iblech++ | This means that t/pugsbugs/named_2_positional.t passes now.
r6936 | fglock++ | * perl5/Array - added back some AUTOLOAD preprocessing 14:44
nothingmuch next PIL project: PIL on Groovy (groovy.codehaus.org/) 14:45
or Java
but I guess Groovy ought to be easier to implement the runtime 14:46
dudley nothingmuch: Have you looked at Scala? 15:32
nothingmuch nope
nothingmuch has to leave though
rafl_ haskell-src-exts is in Debian now. Next step to total world domination: hs-plugins. 15:36
svnbot r6937 | iblech++ | * util/smokeserv/smokeserv-server.pl: Show smoke details only when requested -- 16:32
r6937 | iblech++ | the page is much more concise now.
r6937 | iblech++ | * PIL2JS: PIL::*: Many "no warnings 'recursion'"
r6938 | iblech++ | * t/var/my.t: Fixed plan. 16:44
r6938 | iblech++ | * Test.pm: Fixed &dies_ok, &lives_ok, and &throws_ok:
r6938 | iblech++ | ok(..., $todo); # wrong
r6938 | iblech++ | ok(..., :todo($todo)); # correct
r6938 | iblech++ | This error went unnoticed as 1) the normal runcore doesn't care about isNamed
r6938 | iblech++ | and 2) Pugs used to emit wrong isNamed properties. But, as 2) is fixed since
r6938 | iblech++ | r6934 and thus PIL2JS respects isNamed now, the bug was revealed.
putter autrijus: I'm sorry for your loss. The only upside I have found in such little deaths is they can help remind you what is important, and what not, and thus live life better for a time. 16:46
fglock: thank you for fixing @a=(...)
iblech: smokeserv layout improvements ++
iblech: a couple of suggestions: 16:47
leave off the column headers. the data speaks for itself rather well.
except when it is lieing. PIR shows 60%. The invisible context is that's 60% of half of a tenth of a percent. 16:48
I suggest groveling over the smokes present, and pulling the largest test count for reference. and including a distilled test report on the top line - one shouldnt in general hide the key data. 16:50
nothingmuch pretty: projectoffset.com/downloads.html 16:58
putter (sorry, phone call) 17:04
so maybe 6.2.9 r6531 linux 28 Aug 2005 21:44 Sun 0% 3: 2 ok 1 fail 0 todo 0 skip 0 us 17:09
as a top level line for PIR
Pugs removed as null-info-content, time-seconds as not worth the ink, Sun moved after, so dates line up, except for month variation, where the staggering is actually informative, 17:11
percent normalized against total tests, and then the key data, duration skipped because it is currently misleading, though perhaps it should go last, 17:12
on, and I forgot, direct link to full smoke content, so maybe
6.2.9 r6531 linux 28 Aug 2005 21:44 Sun 0% 3: 2 ok 1 fail 0 todo 0 skip 0 us / 60 min Full >> 17:13
thoughts?
I'd be glad to hack it, but wanted to run it by you. Though, since you wouldnt have to fake up data, I you wanted to... :) 17:14
Key principles for these suggestions were: ink which doesnt carry information content should go away; and expose the data, don't require digging. 17:16
maybe distinguish release from repository by having the revision blank, or say "release", and keeping it at the head of the section, rather than having two sections, one release and one non. the hierarchy is getting a bit cluttered 17:19
or not. the extra sections might be ok if the column headings went away. 17:20
nothingmuch: pretty as in the page or game is pretty graphically? in a ui sense? ?? 17:22
nothingmuch putter: the movies are very impressive 17:23
putter ah, ok
doh, I left off UTC, so 17:24
6.2.9 r6531 linux 28 Aug 2005 21:44 UTC Sun 0% 3: 2 ok 1 fail 0 todo 0 skip 0 us / 60 min Full >>
though if there ends up beeing a column key at the top of the page, the UTC can go since it's constant ink and thus can/should be refactored 17:27
hi fglock_
fglock_ hi!
putter running a last (hopefully) smoke with the Test.pm simple replacement. hope to get the real Test.pm working today. it was passing 08-test.t, but the test harness didn't like it at all. every make test like complained about hating software! :) 17:30
fglock_ I'm still working on Array problems - I'm writing tests this time :)
putter awesome. one think I didn't expect was how few tests there seemed when viewed in detail, rather than in total. 17:31
10k tests sounds great, but when you write feature foo, and there are only 3 tests, and they each fail for some reason unrelated to foo, but hand test run, you realize there need to be many more tests. ;) 17:33
though the downside of more tests is more to edit as spec changes. the namespace changes, while desireable, mean a whole lot of code and doc are now non-spec. 17:34
fglock_ putter: I did a quick @INC hack - see bottom of ApiX.pm - should this be put elsewhere?
btw - no, you can't easily convert p6 Array to p5 ARRAY, because of lazyness 17:35
putter I haven't looked at it yet, but that's fine. Cruft is accumulating, but that just means it's almost time for a cleanup pass.
Does an array know if it's lazy or not?
fglock_ yes, you can test with $a->is_lazy 17:36
putter for a non-lazy array, can one convert?
fglock_ but $a->is_infinite is more useful - if it is not infinite, you can do $a->flatten 17:37
or just shift out elements until $a->elems == 0
which is probably the sanest thing to do
putter is there a non-mutating way to get a p5 array representing a p6 array? 17:38
fglock_ using tie, I think
putter (putter meant to say: is there a non-mutating way to get a p5 array from a non-lazy p6 array) 17:39
ah,
(putter meant to say: is there a non-mutating way to get a p5 array _copy_ from a non-lazy p6 array) ;)
fglock_ you can also use fetch, which is non-mutating (instead of shift, you mean?) 17:40
but tie is better, because it is 2-way
putter i was kind of hoping for a builting. ->to_native_array() or somesuch
fglock_ np, I can add that
putter tie, in a universe of very slow things (method calls for instance), is very very very slow.
but you are right. especially for mutating primitives (hmm, do we really need them?), a my @a; $o->tie_to_p5_array(\@a); ... could be nice. 17:42
but perhaps we should try to avoid needing it first... 17:43
fglock_ oh, see the @INC implementation
putter k
fglock_ I didn't tie @INC to p6, but the other way out
which means @INC is not modified, and is still native and fast 17:44
putter but a ->to_p5_array_copy() or whatever seems essential. cant do p6_to_a() without it. :) hmm, should work on List's too.
fglock_ where is p6_to_a() used? 17:45
putter @INC is generally associated with touching the filesystem. one would have to try really hard to make an implementation so slow that it was of any significance compared with touching disk. so its one place we dont need any optimization at all. 17:46
hmm... checking... 17:47
fglock_ it looks like p6_to_a() was only needed for @INC after all - is this correct? 17:49
in require() implementation
putter p6_to_a and p6_to_l dont seem to be used anyplace but @INC handling in PrimP5 at the moment. which makes sense as it seems they never worked. :)
fglock_ how about removing (commenting out) p6_to_a and p6_to_l ? 17:50
svnbot r6939 | stevan++ | Perl6::MetaModel 2.0 -
r6939 | stevan++ | * some more notes on Roles
r6939 | stevan++ | * revised object model picture,... the number of circles now means something
putter on the one hand, avoiding unecessary work appeals. on the other, one-way functions are the bane of software engineering. unless it is a large burden, I'd like to be able to get back from an Array, not just get to one. 17:53
stevan: lol
fglock_ ok - I'll fix p6_to_a 17:54
putter "bane" is too understated. One-way functions, the "I couldn't think of a reason why anyone would want to do that, so you cant", is the fetid festering gangrenous pervasive self-inflicted wound of software engineering. 17:55
;)
fglock_ is it ok to return stringified things? deep-converting p6 structs to p5 would take a bit more work 17:56
OTOH, p6_to_a could return a ARRAY of p6 objects - that's straightforward 17:58
putter "I'm sorry, the linker cant do that, the compiler unrecoverably threw away the needed information." "Yes, the linker uses a simple look-up table, an array of a few pointers in memory. You can read it with dl_foo. What? You want to write to the array? Why would anyone want to do that?"
grr. 17:59
array of p6 objects would be great. :)
sorry for bending your ear.
fglock_ :)
putter do Array's support bind yet? I notice a lot 3k+ of "argument to bind() must be a Scalar" errors in the log. but perhaps that's poor code generation calling bind with a bogus argument. 18:02
fglock_ it does support - can you find a particular example? 18:03
putter then it's probably just being called with undef or somesuch. no biggy. I just noticed it going by in the log. 18:05
stevan_ greating all 18:07
autrijus: I assume with the HD failure, we are not planning a release this weekend
putter there are some in t/var/var.t, but I suspect chasing after specific error messages at this point is not the best way to spend time.
stevan_!
svnbot r6940 | iblech++ | util/smokeserv/smokeserv-server.pl: Incorporated most of putter++'s suggestions: 18:08
r6940 | iblech++ | * Removed the table headers, as the contents are self-explaining.
r6940 | iblech++ | * We don't display the seconds of the upload date any longer.
r6940 | iblech++ | * Moved the weekday name to the end so things line up nicely.
r6940 | iblech++ | * putter's idea to calculate the percentage of passed tests using the total
r6940 | iblech++ | number of tests as given by any other test (so PIR no longer shows up as
r6940 | iblech++ | passing 67%) does not work, as new tests are added over time and, more
r6940 | iblech++ | importantly, some backends don't run the tests in ext/.
r6940 | iblech++ | * Minor padding adjustments.
stevan_ hey putter
putter iblech: great! 18:12
iblech: couple of thoughts: ;-)
the system name can go away on the indivitual lines, now that one can see the section headings which give them 18:13
my #1 priority is being able to see the data. so a "3: 2 ok 1 fail 0 todo 0 skip 0 us" or even "3:2/1/0/0/0" is important. I'd trade any other field(s) on the line to make room for it. (btw, why is the table so narrow?) 18:16
having 4 digits of % on the one-line display seems excessive. NN% would make the big picture clearer, and one could always click on >> for more. 18:17
svnbot r6941 | fglock++ | * PIL-Run - fixed p6_to_a 18:18
putter but in priority order (#1 show breakdown numbers at top level, #2 provide a direct link to the full smoke, #3 provide some clue what % means). on this scale, I don't think there's a #4. 18:19
re #3, perhaps... 18:20
what was a's estimate of the total number of tests needed for p6?
say 20000, so one could do 50% 99% as the line for pugs, and 0% 66% as the line for PIR. (where pugs is currently using 10k tests) 18:21
otherwise the % number is problematic, even for intra-platform comparisons (ext/ vs non-ext/), and just about useless for inter-platform comparison. 18:23
hey stevan_. how goes mm2? ;) 18:24
putter think's to himself "I want Modules, Modules, Modules. Packages, Classes, Roles and Modules. Yaaaay, Modules!" (with obvious tempo and inflection) 18:26
SamB what are Roles? 18:29
luqui SamB, dev.perl.org/perl6/doc/design/syn/S12.html 18:31
look about 1/3 of the way down
putter ooo, the smokeserver evolves even as I use it... very neat... 18:32
iblech, I actually liked your summary boxes, because they were an intermediate between "see the big picture" one-liners, and the "requires non-trivial examiniation" smoke headers. 18:33
with the click downs, the one-liners can be terser, less cluttered, relying on the click downs to give the uninitiated a clue. perhaps two links on each line, one for the full and one the old push-down? 18:35
then
153.02 min 16.52 % ok 7172 total: 1185 ok, 5987 failed, 2 todo, 7 skipped, 0 us
could be 18:36
oh, putter notices the site has improved while he typed... 18:38
anyway, the thought was having the push down would permit the one-liners to be more obscure, if that seemed the best way to show the big picture. 18:39
though if things end up in columns, then one could punt the column labels.
and the "NN min", as the least useful bit of data, seems out of place at the front (left). 18:40
feel free to say "thanks, putter. that's it for today" at some point. ;) 18:41
fglock_: the recent changes (lexicals and control flow) seem to have both broken tests, and fixed tests. the large drop in % is perhaps mostly due to regexps breaking. 18:44
m19s28.vlinux.de/cgi-bin/pugs-smokeserv.pl 18:45
I'm pondering whether to go ahead and make the Test.pm switch, and then see where things stand, or debug a bit first.
fglock_ does Test.pm works already?
putter by itself, it did. inside of test harness (make test), it completely failed (with an odd message). 18:47
oo, fglock_, if you wanted to replace warn "Help! How do I stringify Class into a class name?" in ApiX, that would be great :) 18:49
fglock_ ok
putter hmm, that's new. perl perl5/PIL-Run/crude_repl.pl -Iblib6/lib t/01-sanity/08-test.t currently has a 18:51
Fyi: Can't locate object method "push" via package "Perl6::Container::Array::Native" at /home/net1/perl6/pugsxpl1/perl5/PIL-Run/../Perl6-Container/lib/Perl6/Container/Array.pm line 513.
fglock_ @INC was a quick hack :)
putter hmm. so the reason for tying p6 @INC to p5 @INC was what? putter doesnt think he understands the implications... 18:54
fglock_ p5 and p6 share the same @INC (but I don't know if that is desirable)
what does Pugs do with Perl 5 @INC? 18:55
putter hmm. we still dont have a concept of how p6 and p5 namespaces interact, with the mm landing so heavily in p5 space. or I'd be tempted to have a p6 @*INC and a p5... @Perl5::INC ? 18:57
re pugs, not sure. checking..
putter realized just as he hit return that it would not be easy... 18:59
how about @*INC and @Perl5::INC, and we'll worry about it later? 19:00
fglock_ ok - you can change the array name in Apix.pm, and it should just work 19:02
@INC will be empty on start?
putter The PrimP5 require() checks a few extra dirs (".",etc) in addition to @INC. the -I's get pushed on @INC first. 19:04
which is probably where the push() error comes from.
oh, btw, i notices foo(*@a) didnt seem to be working. not sure why. 19:05
fglock_ is the splat flag being set before calling Code->do() ? I'm not sure if this was implemented, but I think so 19:06
putter splat flag? that's probably it then. 19:08
rafl_ After the haskell-src-exts Debian package now also hs-plugins is packaged. I think I'll upload tomorrow. Now only parrot is missing to get a full-featured pugs into Debian. :-) 19:09
19:11 GeJ_ is now known as GeJ
svnbot r6942 | putter++ | ApiX.pm: moved tied p5 \@INC to Perl5::\@INC. 08-test.t passes (p6_to_a() is working). fglock++ 19:11
putter oh, wow
putter considers switching to debian.... again...
fglock_ slurpy flag - see Code.pm, Perl6::Param->new(), line 134 - and bind_params() - line 270
putter looking...
Juerd putter: Just do it. 19:12
putter ;) 19:14
putter got stuck wondering why 08-test.t says pugs: user error (Can't locate 5.004 in @*INC
there _are no_ 5.004's in pugs (well, in comments and talks and such). something seriously odd is going on. 19:17
putter goes to do splat
fglock_ stevan: is there a way to get the class name from the class object in mm1 ?
putter: s/splat/slurpy/ - my mistake 19:18
putter f(*@a) gets PILed as a 19:20
iblech: ooooooo, prettttyyyyyy
as a &f( &prefix:*(@a) ) 19:21
that is, a normal f application, with a single argument, the result of applying &prefix:* to @a. 19:22
putter never even thought of using color... sigh... 19:23
btw, make test-perl5 says 19:25
t/01-sanity/01-tap.................................hate software so much. 19:26
t/01-sanity/01-tap.................................dubious
Test returned status 9 (wstat 2304, 0x900)
which suggests we are trying to run perl5. !?!?
fglock_: re slurpy. ah. this is the other end... sub f($x,$y){$x+$y} @a=(3,4); f(*@a) 19:28
I'm not sure what officially happens. &prefix:* returns a List? 19:29
f(*@a,$b,*@c) PIL's as f called with 3 arguments, *(@a), $b, and *(@c) 19:30
fglock_ putter: I think *@a returns a native array, that will be bound to $x and $y 19:31
this may need some additional work 19:32
putter k
fglock_ p6_to_a may be useful here 19:33
svnbot r6943 | iblech++ | util/smokeserv/smokeserv-server.pl: More de-optimizing for 640x480 (putter++):
r6943 | iblech++ | * Display total/ok/failed/skipped/us directly at the top level, with colors.
r6943 | iblech++ | Also done s/ /&nbsp;/g so the layout doesn't break at 640x480.
r6943 | iblech++ | * Added a second >> link which points directly at the full smoke report (this
r6943 | iblech++ | is not very user-friendly, suggestions?)
r6943 | iblech++ | * Removed the osname column, as the os is already shown in the section heading.
r6943 | iblech++ | * Minor alignment fixes.
putter given that people have varied machines, I suspect the durations are not comparable anyway. unless you know which items you yourself uploaded. ;) 19:38
very nifty.
re suggests, hmm... "full"?
but actually I think the >> >> looks fine 19:39
putter starts to wonder if the "hate software so much" error messages are a suggestion, rather than an observation. 19:40
oh, duh. its not like pugs -B PERL5 was ever implemented... 19:42
oh, so what were the thoughts on doing a pugs rapper? 19:43
svnbot r6944 | iblech++ | PILJ2S: README: Added section about &prefix:<*> (splatty/flattening).
putter timely reading... 19:44
lol # @array but flatten_me 19:46
thank you iblech :)
strawman proposal: pugs renamed pugs_bin, pugs becomes a perl5 script which calls pugs_bin. thoughts? 19:48
alternative, pugs exec's a pugs1 script when it gets -B arguments it doesnt know what to do with. 19:51
upside, simpler change. no issues of wrapper finding right version of _bin. downside, bit of kludge. cant easily augment normal pugs use. 19:53
autrijus I like pugs_bin. 19:54
putter hi autrijus
ok, pugs_bin it is.
any dissent? reservations? cautions? 19:55
fglock_ the purpose is to allow redirecting pugs to PIL-Run, for example? 19:57
autrijus ^Wyes. 19:59
fglock_ will there be a separate PIL2Haskell? (just curious) 20:02
putter fglock_: its more like there are a class of things, like forking to backends, or backend-independent argument and environment handling, that are more easily done in perl5 than in haskell. once there is a layer of insulation, where things happen within "pugs", haskell, p5, p6, combinations, becomes a "mere implementation" issue. pugs.hs would only need to break out pil2haskell if there was some reason it wanted to. 20:09
fglock_ k. nice idea, btw 20:12
putter my experience writing windows-compatible distributions is limited. can we write a simple "pugs" perl5 file, or do we need a install preprocessing opportunity to make portability work? (eg, "pugs.in" massaged into to "pugs") 20:13
err, pugs.exe, whatever. do we need a .in? 20:14
tnx
it's come up before, so collective credit 20:15
fglock_ windows would need a pugs.bat in order for 'pugs' to work - I think the Makefile takes care of this (not sure though)
putter: re stringifying a class name - $ref->{instance_data}{identifier} returns the long name 20:21
putter tnx. I'll give it a chance to be simple and see what breaks.
!:)
fglock_ {name} is the short name
putter If you haven't seen iblech's new smokeserv look, it's worth a look m19s28.vlinux.de/cgi-bin/pugs-smokeserv.pl 20:22
fglock_ putter: thanks to ':5 use Data::Dumper' :) 20:24
putter :) 20:26
fglock_ biab &
putter k 20:28
:5 does turn out to be very useful sometimes. 20:29
svnbot r6945 | putter++ | ApiX.pm: p6_to_s() now work on instances of Class. eg, p6_to_s(Num). fglock++ 20:31
putter hey nothingmuch 20:45
nothingmuch hi ho 20:50
putter what are you up to nowadays? forthing? 20:51
nothingmuch no
we had the rennovation business
then my brain was shutdown for a week 20:52
due to medication
then we went on vacation
and then it became today
putter lol
dudley wishes he could speak of renovation in the past tense... 20:53
putter pulverized cement, pulverized brain, pulverized rock?
(sand)
nothingmuch putter: what's next?
putter wishes he had something to renovate... 20:54
don't know. was wondering about that myself. 20:55
dudley nothingmuch: Have you written much Groovy?
nothingmuch dudley: no, i don't know it =)
it just seemed to be the easiest way into JVM
dudley www.cabochon.com/~stevey/sokoban/do...roovy.html 20:56
this article put groovy about fourth on my list of jvm languages to try
putter improved object support, either on pugshs or pil2js, would be nice.
dudley stevan and I were talking about implementing the mm2 in scala 20:57
but scala's lack of a decent unit testing framework killed that 20:58
so now I'm looking at Nice
Aankhen`` goes to sleep. 21:00
putter big picture, parser->compiler->pil->backends... parser - only pugs. Parser.hs could use some cleanup and extension. next big step is a p6 rules based parser. requires rules. PGE has been too buggy (failure to backtrack issue). rules-on-prolog is another way to get there, at least temporarily. 21:01
Aankhen`` G'night.
putter night
compiler - only pugs. lots of work which could be done. next big step is a p6 based compiler. no-one has been trying lately, so its not clear what the issues are. limited experience suggests big p6 things experience pain vis pugsbugs. it would be nice to see someone try. 21:03
pil - a's working on pil2. I have no idea how imminent that is, or if there's anything one might do to help. 21:04
nothingmuch i think we need to learn more about compilable units before this starts
the semantics have many fine lines
putter interesting
could add -c -o to pilrun :) 21:05
nothingmuch -c -o ?
putter -c foo.p6 -o foo.p5
nothingmuch ah
putter or to pil2js. but the dynamism of both environments could obscure issues. 21:06
nothingmuch right
i think that the "real" compilable units are encapsulated PIL
and that the PIL runner thingies need to implement runtime linking with well defined semantics
and that we have to test that these semantics are sane where they weren't sane before: 21:07
mod_perl
WRT BEGIN, INIT, CHECK etc
eval vs use
in perl 5 it was a single imperative process modifying some runtime data
which affected the compile time and the compile time of other code in ways that the compiler could not predict at all 21:08
and we need to retain backwards compatibility to some extent
but also make the semantics stabler, and easier for the compiler to eat
so that the very complex semantics of perl 6 can be made to actually do math faster than a human 21:09
putter "PIL runner thingies" ++ :) 21:10
I was toying with idea of going one level up from lazy languages, and trying a PIL compiler in a constraint language.
nothingmuch =)
putter I worry a bit that we only have one oo-capable backend, which doesnt seem quite ready for really heavy use (eg, a compiler), and that is not really undergoing active development. 21:13
nothingmuch stevan's work is very heavy development
putter when piljs does oo, at whatever speed, I'll be much happier.
right, but the rest of pilrun is very non-heavy-use-ready. 21:14
nothingmuch well, i guess that the metamodel, once finalized 21:15
or rather, once it feels finalized
and once autrijus will be done with PIL2
will be ported quite rapidly
putter certainly whenever mm2 is runable, finalized or not, pilrun can switch. 21:16
nothingmuch have you tried hacking it in?
putter no
stevan said "not yet"
nothingmuch hmmm 21:17
persuade him to hack in the delta to usability and clean it up later
putter nah. main point of pilrun at the moment is to _help_ the mm work, not to distract.
nothingmuch heh 21:18
putter the lack of robust oo means that to be productive, people write in other languages. so the p6 core - a regex engine, a parser, a parsetree->pil compiler, gets defered. 21:21
nothingmuch yup 21:22
putter also things like a ruby->p6 frontend, which would help stress the pil semantics.
err, not pil, but the what you desribed a moment ago.
saying static things about dynamic code 21:23
nothingmuch really hoped more people would have commented on the linking thread
putter oh, there's a sick thought. pil2js can be run linked to perl. how about pilrun compiling to p5 which is supposed to run with either itself, or pil2js? 21:24
integral nothingmuch: hmm, what thread is that?
putter err, s/run with either itself/run with a runtime of either pilrun or pil2js/ 21:25
nothingmuch tries to find it
do you mean compiling to perl 6 21:26
and compiling that to js?
if you mean compiling this module to js
and that module to perl
and running them together
than it's the responsibility of a js/perl bridge
and the responsibility of the compilers to integrate well enough to js and perl so that the bridge thinks it's running native code. 21:27
xinming seen autrijus 21:28
putter nothingmuch: sorry, phone 21:44
nothingmuch =)
putter pilrun compiles to p5, which would naturally work with the pilrun runtime, but instead try to make it work with pil2js via a bridge. the shape of the needed bridge tells you something about linking. 21:46
nothingmuch hmm 21:47
i
putter ok, pugs as perl5 script is in.
nothingmuch i think this is too hard a problem
what i'd like to see is an API for loading PIL bits
putter hasnt been tested on windows. nor make install. nor...
nothingmuch where each PIL bit was compiled by a different process
and where the beginings of static analysis can be made 21:48
putter I image some shake down will be needed.
nothingmuch for example a 'use optimize :static_subs'
where each sub call is resolved as early as possible into a by value deref, instead of a by name one
then we can start seeing where the boundries of static compilation as an excercise in caching can be darwn 21:49
svnbot r6946 | putter++ | pugs is now a p5 script which calls pugs_bin. Only limited testing - make test on linux.
nothingmuch drawn
when we start running tests against interpolated forms then we can learn what needs to be changed
and because so much of the perl6 plan relies on good support for AST or IL transformations, when we can back port this support into PIL3, then we can *really* start writing good code meitters 21:50
i'd also like to see the prelude/native bridge plan come out 21:51
where the prelude is a circular implementation
and the runtime says what pristine versions of prelude calls it implements natively
putter is there a import exclusion-set concept? so we could start having a common prelude now, and various backends could just import (-foo -bar) their foo bar choices for primitives? 21:53
nothingmuch i think this should be handled on a lower level
each single code ref should have a "binary alternative" attribute
prelude multimethods can have variants with or without backend implementations 21:54
bits of the prelude like File::open that can't be "emulated" circularly are stubbed
but have alternatives
the test suite ensures that all the backends implement the prelude with the same semantics as the prelude itself 21:55
putter what are the first steps to move in that direction?
nothingmuch so, for example &infix:<*> (Int $x, Int $y) { $x + ($x * $y-1) } 21:56
that way * is defined in terms of + and -
ofcourse, parrot will say that * on two ints is simply the native opcode
and * on two Nums is more more complicated
the things that are needed are a high level API for static binding of parameters 21:57
and a code object with attributes
and introspection methods to allow the runtime to load the PIL for the prelude
annotate it with it's native operations
(this will need versioning for functions, because bug fixes need to be ported) 21:58
putter hmm
nothingmuch now, once we have this code emission can be generalized a bit
PIL functions that static analaysis shows have not been overridden (This can be omitted initially) are replaced with opcodesD 21:59
non opcodes are translated
or simply stored as PIL and interpreted
i think this is a sane model because it's very supportive of incremental changes 22:00
for example, to add an opcode for for loops you annotate &control_structure:<for>;
putter emphasizing _first_ steps, it sounds like a the creation of a greatly expanded prelude.p6, yes? 22:01
nothingmuch yes
putter that would be neat.
nothingmuch with a very heavy emphasis on correctness
quality testing
that is a reference implementation of perl 6 in perl 6
this is how it's tested: 22:02
putter pil2js and pilrun are currently roling their own p6 preludes (in addition to their primitives of course). it would be nice to combine and extend.
nothingmuch to test the p6 prelude you use any runtime, and compile it to that VM
putter s/primitives/things implemented using primitives/
nothingmuch but allow only a minimal set of opcodes
if you randomize the minimal set enough times
and the tests keep passing
then your IMPL is OK
putter ;) 22:03
nothingmuch to test a runtime against itself you do the same for it's opcodes vs it's other opcodes vs vanilla prelude
or against another runtime
putter so, where should the new prelude.p6 go? perl5/ ;-)
nothingmuch with or without the same function swapping
heh
where it is right now
but it must grow a whole lot
putter src/perl6/Prelude.pm needs to continue working (well) with pugs. which is actually an painfully strong constraint. 22:04
nothingmuch and it must implement silliness such as &infix:<+> (Int $x, Int $y) { inc($x) + dec($y) }
&infix:<+> (Int $x, 0) { $x }
putter growth in particular is a problem
nothingmuch &infix:<+> (0, Int $y) { $y } 22:05
hmm
i think Prelude.pm could simply import the functions from e.g. Prelude::Math::Integral into the global namespace
btw, with my understanding of the pugs internals 22:06
which is not too updated
the pugs model should support this annotation quite easily
instead of missing functions in the prelude where there are pugs builtins
the builtins are actually stored in the data structure of stuff like 'sub &infix:<+> ($x, $y) { ... }' [sic] 22:07
and then that code can be filled in
does this sound sane at all?
putter pondering... 22:08
nothingmuch let me ask a question: 22:11
does this model not support any of the things you guys are doing right now?
putter I'm leary of anything non-optional which affects pugs_bin, as it is a common dependency of everything else. Precompiling the Prelude was added because speed of loading the raw p6 became an issue. Anything which involves other p6 files in the prelude will thus likely first have to deal with precompiling them too. 22:12
nothingmuch well, we don't have to make it grow just yet 22:13
an incremental plan
add support for opcode annotations without changing the prelude
make it translate to the current representation of prims
then implement replacement of prelude functions with opcodes 22:14
as an optional feature
and implement several Prelude functions as pugs-hs builtins to test
then gradually add sub foo { ... } for each builtin
and change the hard coded internal representation to use that
when that's done make the internal representation more like the annotation model 22:15
putter performance concequences?
nothingmuch ~2 more pointer derefs for each prim on the haskell side
svnbot r6947 | fglock++ | * perl5/Array - fixed (1..Inf).reverse
r6947 | fglock++ | - the error was in Array.str after all
nothingmuch incremental
fglock_ PIL-Run passes 16/30 of t/data_types/lazy_lists.t 22:16
nothingmuch what I hope this does give us is things like DBD::PurePerl being DBD
annotated with runtime dependant versions
and I also hope it gives us the ability to clean up the mess of builtin functions
like putting 'eval_yaml' in Prelude::Deprecated 22:17
and annotating that into the haskell binding to Syck
untill a "true" YAML for perl 6 is out (at which point the Syck binding can simply be moved)
does this make more sense now? 22:18
putter wonders why crude_repl.pl in head is missing things he's sure he committed...
I'm afraid I'm not entirely following the proposal, let alone understanding it's implications.
try doing a local branch in svk? 22:19
nothingmuch no chance i'm that competent
and I don't have enough time
putter the big common prelude file sounded like a nice idea
a place to start?
nothingmuch i think the opcode replacing API is better 22:20
how do you guys implement the prelude translation?
how do you guys implement &infix:<+>?
putter my understanding is neither pil2js nor pilrun use src/perl6/Prelude.pm. Each rolls its own. 22:22
if you mean Prim.hs, again, each has its own mix of pure native code, p6 code with "inline" native code, and pure p6. 22:23
nothingmuch okay 22:24
so this is not far from what I'm proposing
how does the definition of &infix:<+> look in pilrun?
is it "native" in the sense that its "PIL::Run::Code->new(...prototype_info..., body => sub { $a + $b })"?
because if you have that as a data structure, all I'm saying is that Prelude.pm should be annotated by the runtime 22:25
and that a reference to the thing that implements &infix:<+> should be accessible via the code object of &infix:<+> in the prelude
which really isn't that much =)
putter perl5/PIL-Run/lib/PIL/Run/PrimP5.pm perl5/PIL-Run/lib6/P5Runtime/PrimP6.pm 22:27
MULTI SUB infix:<+> ($xx0,$xx1) { p6_from_n(p6_to_n($xx0) + p6_to_n($xx1)) }; in PrimP5.
nothingmuch aha 22:28
that was easy =)
MUHLTI SUB is jsut 'sub MULTI' with a fancy prototype, right?
putter pilrun doesnt have pil2js's nice Inline concept, so the body is actually p5, and the sig, which is p6, source filter expands to whats needed to declare it.
nothingmuch ah
okay
so what I'm saying is that pilrun should know for every opcode which prelude function it implements 22:29
for starters
putter pil2js has nice foo.p6 containing sub foo () { Inline::JS('...')() } or somesuch
opcode? 22:30
nothingmuch opcode == builtin
then when this cross index is completed the code builtin emitter thingy could load the prelude, compile the PIL code to use prelude.pm, and then go through the PIL code, and eliminate calls to the prelude, replacing them with calls to builtins, by resolving the prelude symbol and seeing if it has a native version 22:31
? 22:32
canm someone please run t/rules/perl5.t and tell me if it terminates in under 5 minutes on a reasonable machine? 22:34
fglock_ pre-compiling prelude to pil would be a first step - is it possible?
nothingmuch fglock_: what do you think of all this?
putter perl5.t is about 6 on mine (pugs), and 10+ a bit (pilrun), and boom (pil2js) 22:35
nothingmuch i have one that has had 1:37 of CPU time and didn't even output a plan yet 22:36
putter 386 cpu?
fglock_ before optimization, '+' can be a Code object. after optimization, native p5 is necessary. but it makes sense, I think 22:37
putter fglock_: re precompiling to pil, that wouldnt be difficult. but pugs is currently not the speed bottleneck, at least for pilrun. perhaps on pil2js. 22:38
though it also isnt trivial. but its going to be less than a 2x speedup. 22:39
nothingmuch: so you were thinking of doing groovy?
nothingmuch no, not at all 22:40
it was just "someone, please look"
putter ok. i'm confused.
nothingmuch fglock_: that's exactly what I wanted... the before optimization and after optimization distinction should be a language semantic, not only an optimization
putter s/i'm/i was/
fglock_ nothingmuch: I'm rereading the irc log - can you summarize in a few words what problem this solves? (introspection, etc?) 22:41
nothingmuch several points: 22:42
* should make writing a backend simpler
implement the minimum that your backend needs and reference implementation of prelude.pm can fill in the rest with slow but correct code
* unifies approach towards compiling to opcode driven VMs
the code emitter could be a generalized superclass in p6 22:43
which just happens to emit code in js, p5, or whatever
* opens door to optimizing certain things for speed
for example, if I want to write a perl module for the perl/parrot/js/whatever runtime of the future, i should be able to provide native allternatives easily 22:44
the interface remains the same, since it must be callable from everywhere
but the perl 6 code that can be compiled to parrot and js or something completely different
should have the option of easily including a PIR alternative if i want it to run fast on runtime foo and i'm willing to make the effort 22:45
an example of how people are doing this today in perl 5 is search.cpan.org/~abw/Template-Toolk...tash/XS.pm 22:48
i think it should be more incremental
fglock_ the runtime loads it's native libs, and then loads Prelude, except for the subs that are already defined natively - right?
nothingmuch allowing partial optimization
22:48 chibiryuu is now known as chibiryuu`gone`
nothingmuch no, it loads the entire prelude and links to it 22:48
then it iterates the PIL structure 22:49
and resolves all the sub calls that it can
in the future the inferrencer should do this more safely and smartly
whenever it can be sure of a call going to a particular code ref, it checks if that code ref has a native alternative
if it does, it uses that
if it doesn't it compiles a hard call to the code ref 22:50
ping? 22:52
fglock_ pong :)
nothingmuch is this clear enough?
fglock_ yes - we need to add a linker - we don't have that yet 22:53
nothingmuch exactly
that's how this discussion started =)
fglock_ whether we link bytecode or pil doesn't make much difference 22:54
nothingmuch i think the linker should link high level structures
so it should be PIL or something with a compatible enough interface 22:55
this is then passed to the optimizers
which is then passed to the code emitter
which might have optimziers of it's own
and with some luck this is flexible enough to happen incrementally during runtime, interleaved with normal execution in order to increase responsiveness
fglock_ how about contributing a drawing to /docs ? 22:56
nothingmuch i'll make an attempt 22:57
nothingmuch fires up bundled version of omnigraffle for the 2nd time in his life
iblech: smoke server wants rss 23:02
huraah! parrot issues fixed: m19s28.vlinux.de/iblech/stuff/pugs-...c3a0d.html 23:04
svnbot r6948 | putter++ | pugs: initial support for -B perl5 and -B JS. There is still an issue of how runjs/pugsjs/crude_repl find their way back to pugs. Currently, you still have to set your PATH correctly. 23:07
putter nothingmuch: :)
nothingmuch UGH! dduncan-- 23:08
broke my smoke loop since it updated itself with a conflict due to the space silliness
*sigh*
nothingmuch ponders forcing it back to tabs 23:09
dduncan sorry 'bout that
its been a week though ...
I didn't do any detabbing since last weekend
nothingmuch right, and the script hasn't been running all that while, since some tests were hanging
which just goes to show what a mess these kinds of changes due to working copies =( 23:10
dduncan still, I only intended for that mass change to be done once ... from now on its up to individual sections to maintain themselves with the appropriate whitespace for their situation 23:11
nothingmuch but why was it done in the first place?
dduncan I consider the problem you faced to be the 1% exception, though
nothingmuch what was so horribly wrong with the way things were?
dduncan better maintainability
nothingmuch *cough*
i find spaces annoying to maintain 23:12
some people don't
svnbot r6949 | fglock++ | * perl5/Array - yet another try to fix Array.str
r6950 | putter++ | pugs: minor correction
r6951 | putter++ | pugs: untabbify
nothingmuch that's just what it is, a user choice
dduncan the problem with mixed tabs and spaces in the same file is that they display differently depending on who's looking at them
nothingmuch not if they are edited consistently
dduncan why would you indent some lines with tabs and others with spaces? 23:13
nothingmuch no
i would indent all lines in the same indenting format the file was in the first place
the reason i'm upset is that my code, which i'm the only one who uses, the smoke loop, which I share for the purpose of reference
putter starts a fresh install, just to make sure he hasnt broken things...
nothingmuch should not be broken by massive updates that have no value 23:14
dduncan however, when I came along, greater than 90% of the files having tabs in them were mixed tabs and spaces ... there was only a handful with pure tabs
wolverian www.jwz.org/doc/tabs-vs-spaces.html
dduncan currently I recognize that makefiles must indent with tabs, but what other kinds of files require that? 23:15
nothingmuch files that nothingmuch was editing in his working copy
that were with tabs to begin with
and well formatted
which now have conflicts
(due to conflicts they now have tabs, spaces and syntax errors instead of just tabs)
dduncan you're welcome to reverse the change on those specific files in the repository, and then try to commit your work 23:16
nothingmuch i won't do that because that will only make things worse off than before
dduncan you would remove the tabs again after your changes
that's just a temporary step so you avoid your conflicts 23:17
nothingmuch i'd just really like to be sure that the next time someone wants to make a big change that affects the whole code base that someone would stop
and ask people to try to do it incrementally as they check in files
dduncan who would remember?
nothingmuch no one
but the point is - tabs and spaces don't matter
dduncan and the issue was discussed on this channel in advance 23:18
nothingmuch if it really would have bothered someone that a file is "unmaintainable" then they could fix it on the fly, and commit that
dduncan everyone agreed that having spaces consistently was better
nothingmuch i'm not sure everyone agreed that changing them all in one go was better
many people bitched about this all week long
dduncan most people were already using spaces from the start, only a minority weren't 23:19
I was one of those minority
nothingmuch it doesn't matter
i really don't care if it's tabs or spaces
dduncan the main thing is that one is consistent in the choice
as I said, most files mixed both of them, which helped no one 23:20
nothingmuch what I do care about is that if things are broken WRT horizontal whitespace, they could be fixed on the fly, carefully, and manually
but files which worked, and were not inconsistent (or no one noticed they were inconsistent) aren't bugging anyone
hence they are not broke, hence they should not be fixed
putter then we're all set. and dduncan's rollback concept is an easy way to merge changes which only affect a few files. though it might be easier just to M-x untabbify your local file.
dduncan they bug people who want to maintain them and indenting is inconsistent 23:21
nothingmuch then those poeople will update them the next time it bugs them
it's really much simpler, no headache, no fuss
no breakage
that's all i'm trying to get... a "yes, i see how this broke, i'll be more careful next time"
dduncan I already recognized that before 23:22
and said so
nothingmuch you seem to keep trying to say "no, you're rong, just untabify and you'll be happy"
putter thinks this so isnt a problem. Even if he hasn't pursuaded perl-mode to not use tabs, and has to remember to M-x untabbify.
dduncan I also said how to work around the problem now that it is already caused
nothingmuch i already worked around this problem... and i'll say it again: this isn't the point 23:23
dduncan okay, I'll say it again ... I recognize that my large change did lead to some problems
nothingmuch will there be any massive if/else cuddling or uncuddling, or parenthesis padding, or automatic assignment vertical alignment next week? 23:24
dduncan no
only with my own code
nothingmuch okay
=)
dduncan the space thing was the only thing I was doing on a wide scale
because it was the simplest and easily agreed on problem
svnbot r6952 | fglock++ | * t/.../lazy_lists.t - fixed syntax 23:27
r6953 | fglock++ | * t/.../lazy_lists.t - another syntax fix
putter dduncan: so what are you working on nowadays? 23:29
nothingmuch really likes the crayon color picker
dduncan mainly the Perl 5 versions of my Rosetta framework
putter tries to get a feel for what folks are up to...
dduncan for databases
putter ah
right
dduncan and eventually translating them to Perl 6y
putter neat 23:30
dduncan I just want to do a whack of stuff in Perl 5 first, so I don't have to translate all those fixes separately
putter any idea what the timeframe is on starting p6? any showstoppers?
makes sense
dduncan moreover, I'm making my Perl 5 look more like Perl 6, to reduce the maintenance later in having both versions updated in parallel
hopefully I'll start translating SQL::Routine to Perl 6 within 2-4 weeks 23:31
that's the most-core one
putter in what way(s) are you making your p5 p6-like?
dduncan I last translated it to Perl 6 around April-May
whole bunch of ways ... 23:32
3-part version numbers ... already on CPAN
use of 'only' for 'use Foo' statements, allowing all the same flexability
Class::Std 23:33
other various
I have to go to lunch ... talk later
putter "how to make your p5 code more p6-like" could make a good quickref/wikipage/article.
later &
dduncan P.S. At the same time, I'm making a whole bunch of changes inspired by Best Practices ... which are largely the same as making perl 6 like 23:35
putter :) 23:37
oh, drat. make test uses /blib/script/pugs rather than /pugs 23:38
so pugs -B perl5/js tries to find them in /blib/script/perl5/... not /perl5/... 23:39
iblech: any thoughts on the RightWay for pugs to find runjs and runjs to find pugs? 23:45
or anyone? 23:46
the callback can certainly be an environment variable
but the call....
iblech: any object to runjs and jspugs being installed in blib/script/ ? 23:47
makes editing a bit more of a pain
svnbot r6954 | putter++ | PIL-Run: moved the simple and fast lib6/Test.pm to lib6_disabled/. The real Test.pm now runs by default. 23:52
fglock_ putter++