pugscode.org/ | nopaste: sial.org/pbot/perl6 | pugs: [~] <m oo se> (or rakudo:, kp6:, smop: etc.) || We do Haskell, too | > reverse . show $ foldl1 (*) [1..4] | irclog: irc.pugscode.org/
Set by TimToady on 25 January 2008.
00:25 jrockway_ joined 00:33 jrockway joined 00:57 jrockway_ joined 01:11 justatheory joined
meppl good night 01:15
01:17 lyokato_ joined 01:41 literal_ joined 01:46 hcchien joined 02:06 alester joined 02:07 alester joined 02:12 pbuetow joined 02:20 snooper joined 02:21 buu joined 02:22 buubot joined 02:59 eternaleye joined 04:38 nipotan joined 05:03 FurnaceBoy joined 05:22 thoughtpolice joined 05:31 marchs29 joined 05:37 zblaxell joined 05:38 marchs29 left 05:43 lyokato_ joined 06:40 Schwern joined 06:49 Schwern joined 06:59 Schwern joined 07:09 Schwern joined 07:12 jrockway_ joined 07:21 jrockway_ joined 07:47 zamolxes joined 07:49 Aankhen`` joined 07:50 baest joined 07:55 DemonScrypt joined 08:19 aindilis joined 09:01 masak joined 09:11 Foke2 joined 09:32 IllvilJa joined 10:45 avar joined 10:47 ruoso joined 11:01 simcop2387 joined 11:22 literal_ joined 11:27 chris2 joined 11:36 masak joined 12:21 samp99 joined 12:22 samp99 left 12:31 jrockway_ joined 12:35 Moss23 joined 12:56 LazyJim joined 14:00 eternaleye joined 14:03 leninmhs joined 14:06 elmex joined 14:16 elmex joined 14:21 pmurias joined 14:30 stevan_ joined, FurnaceBoy joined 14:40 Aankhen`` joined 14:41 zzzhc joined 15:02 TJCRI joined 15:16 justatheory joined 16:07 mncharity joined
mncharity a quiet backlog, ah well. :) 16:09
16:13 elmex joined
mncharity ok, my current big picture looks like * get STD_red parsing a usable subset of p6, and dump to yaml; * do an elf_on_STD_red, ie, an elf_a_generate.p5 which writes an elf_a.rb which compiles p6 to simple p5. then an elf_b_generate.p5 which 16:15
writes a elf_b.p6 which is compiled by elf_a.rb into an executable standalone elf_b.p5, achieving backend bootstrap. 16:16
then push on prelude, test suite passing, and dumping yet_another_regex_engine from p5 into p6, to begin bootstrapping the frontend as well. 16:17
oh, and pushing on clean support for additional backends, so the backend folks can start working towards more real backends/runtimes. 16:19
basically just elf_on_rakudo, but on the faster and more-STD parser of STD_red_run instead of scraped rakudo --target=parse. 16:20
16:22 Daveman joined
mncharity help, questions, critique, commentary, whatever, most welcome. 16:22
16:26 jrockway joined
mncharity cd src/perl6; ./STD5_run EXPR -e '3+3' | ./STD5_run_post 16:28
cd misc/STD_red; ./STD_red_run -e '3+4'
16:30 pmurias joined
mncharity STD5 is mostly just EXPR parsing, since its focus has been to get longest lookahead parsing working. 16:30
STD_red is intended to be fully general. Getting there, one quirk at a time. 16:31
eg, ./STD_red_run -e 'class A is B { has $.x; method m($y){$x+$y*3} }' works. 16:32
but 3.foo doesn't, though it does in STD5, so it's time for some comparative debugging. 16:33
pmurias mncharity: what i think is important to keep in mind is that the compiliation model when you need to handle BEGIN blocks is a lot diffrent 16:34
mncharity i've been wondering if BEGIN blocks are needed at all (for getting to backend bootstrap). any thoughts? 16:35
the metaprogramming is all happening externally, so no macros, nor BEGIN{} eval'ing code, so... 16:36
not sure what it would be used for.
pmurias i don't think they are needed for bootstrap
mncharity :)
"easiest way to accomplish something is to remove it from the todo list" :) 16:37
any other 'things to look out for' come to mind? 16:38
pmurias but they changed the way the compiler needs to work diametraly, but if you plan to throw away everything you don't need to worry about them 16:39
i belive only good rules support is needed for bootstrap, the other stuff can be handled anything even mp6 or java 16:40
s/can/could 16:41
s/even/, even/
16:44 Lorn joined
pmurias externall metaprogramming = code generation? 16:44
mncharity so possible sources of a p6 implementation of rules support are kp6 (+already in p6, ?i'm unclear how general it is, or how tested); Perl::Compiler::Rules (is this what pugs is using? if so, then +well tested, -p5, ?i don't know much about its internals); yet_another_regex_engine (+well tested, -p5, +i know its interals, -they have some "not quite working"s). 16:45
pmurias kp6 rules are really primitive 16:46
mncharity re metaprogramming, misc/winter_jig/elf_on_rakudo/'s elf_zero (ruby) is written by elf_zero_generate.pl (p5), and elf_one.p6 (p6) is written by elf_one_generate.pl (p5).
pmurias mncharity: why? 16:47
mncharity :), let's see... 16:48
makes it very easy to do non-local changes
discovering parser X needs a semicolon after each class {} for instance
and the set of ast nodes was under continuous change during elf_zero/elf_one development. but because all the code was generated, that was easy to do 16:49
pmurias seems a bit of a hack 16:50
mncharity and easy to continue evolving the ast api, because all the ast node class code was metaprogrammed.
very much a hack. intended to have a life expectancy of days. but to reach bootstrap in those days. 16:51
also lets you engineer for the development process. eg, exploring the rakudo parse tree, and writing ir constructors for it, was happening quickly. in hours, rather than days or weeks. 16:53
it's sort of creating a DSL for the task at hand, namely achieving bootstrap. 16:54
pmurias with achieving bootstrap you mean running STD.pm 16:57
?
mncharity from non-CS fields (our tools are crippled:/) , the analogy would be a jig. "the hard part is building the jig/scaffold/mold - once you have that, filling in the wood/stone/bronze/whatever is...", well, not easy, but creating the jigs are a necessary precondition for success. and losing/discarding the jigs similar to having to start over from scratch.
re achieving bootstrap,
two parts, backend bootstrap is a program mumble, written in p6, which runs p6 (and can compile it to p5). but which uses an external parser (rakudo or now STD_red_run), to get from p6 code to a yaml dump of the parse tree. mumble does the rest, but is thus not a full bootstrap. 17:00
then doing the rest of the bootstrap, requires developing a frontend written in p6. so an rx engine, and grammar it can run. hmm, or perhaps
more simply, just a cheat/gimme5 like hack, converting STD.pm to p6, might be an easier first step. 17:01
but need an rx implementation anyway, so I'm not sure a "massage the code in STD.pm into a runnable form, but without really understanding it" hack really helps much on bootstrap 17:03
but re 'running STD.pm?', basically yes. Derived-from-STD.pm, or eventually STD.pm itself, from here on out. 17:04
pmurias i think creating a good rx implementation is the most important issue
the regex part of STD is quite isolated 17:05
so it should be possible to run it before the rest
mncharity: what features you like to use when writing backends does mp6 lack? 17:06
* would like
mncharity long ago, yet_another_regex_engine was written with the intent it would support a p6 grammar, and then be translated into p6 itself. now the only question is which of several p6 engines to translate, and how to get there. 17:07
yare had an internal bootstrap, to get to running p6 and p5 rx on bare p5. I'm not sure any of that is needed now. 17:08
17:08 macae joined
mncharity to wrap up on rx engine, it could be useful for someone to explore PCR, and try rewriting it in p6. but please, let's metaprogram the nodes and their fields. :) 17:11
re backends,
do you mean 'why not use mp6?', or 'what should be the feature list for making backend development easy?' 17:12
pmurias mncharity: i mean "why not use improved mp6"
well more "how much improvement would mp6 need in order to be suitable" 17:14
TimToady personally, I'm not much interested in working on any other bootstrap than STD5, which I suspect would be done by now if it weren't for @nemia and $dayjob 17:17
mncharity so background is, doing a bootstrap is like a dance. juggling a big tangle of constraints and tools, finding the low effort pass through the mess. so... i've found kp6 a bit "heavy". though that may just be me not understanding it well enough to wield it lightly. but more specifically, 17:18
TimToady and it could certainly be made fast enough by hoisting the ratchet semantics up out of all the Cursor calls into the inline code...
I almost had that working under pugs a long time ago, but pugs had no decent way to emulate "andthen" semantics 17:19
mncharity it don't don't really believe mp6 rx is working, in the absence of it's running against the pugs regex tests, or at least p6 versions of the p5 re tests. perhaps I'm out of date, and it is now. but my feeling is one of its having been written for the bootstrap, and thus bound to be very "gappy". vs PCR and yare, which got more non-restricted exercise. 17:20
TimToady but notionally, it's just nested conditionals rather than nested maps
mncharity repeat: "which got more non-restricted exercise."
re 'would be done by now', /me does *daydreamy sigh*. ;) 17:21
TimToady sighs but not so daydreamily... :)
17:22 jhorwitz joined
mncharity lol 17:22
TimToady btw the regex parser in gimme5 is already quite close to STD's, modulo only needing to work on STD.pm
pmurias mncharity: mp6 is extemely primitive and would need to be replaced 17:23
TimToady (well, and treating closures as opaque, more or less... :)
mncharity re g5, happy with the ast node+field selection+naming? that's an easy "do it like gimme5" rather than "like yare" or "like PCR". translating internals... well, I wouldn't expect them to actually work until they are getting tested. 17:27
17:27 Schwern joined
mncharity there's another thing we need. it's amazing how much of an rx engine can be buggy, but all our tests are passing. we need many many more regex tests. 17:27
s/happy/are you happy/ 17:28
TimToady well, I've been on record for some time that I think we need 40-50k tests for p6 in the long run
I haven't been worrying much about asts, because I figgered you were worrying about it. :) 17:29
and worst case is a tree transformation pass
mncharity pmurias: re 'mp6 is extemely primitive and would need to be replaced', ah, ok.
TimToady well, in the absence of missing info, which is worster... 17:30
mncharity me not worrying about it. that's what multiple dispatch is for. ;) 17:31
TimToady hmm, surreal superlatives: "worsterester"
mncharity i'm still fuzzy, and not entirely happy with it, but for elf I've been leaning towards a rakudo/kp6/redsix "heavy" ir, an analytic ir, providing a "let's talk about p6" dsl. and going directly there from the parse tree. well, 17:33
17:34 pmurias joined
pmurias mncharity: i mean mp6 rx 17:34
mncharity raw parse tree -> parse tree you wish you had (decrufting, stabilization, might go away someday) -> analytic ir
re mp6 rx, right. so the choice lists then looks like translated PCR, translated yare, or gimme5 something. I need to get more details about the latter. and it needs to be put in a directory somewhere, a test suite (or copy of the "run as pugs's rx engine" glue) snarfed, and get it running. 17:36
TimToady and all tracking back to the original so that the debugger can express things in terms the user understands, not in terms of abstractions that may be incomprehensible 17:37
even p5 confuses users when it tries to warn about concatenation that has been rewritten to $a.$b 17:38
mncharity re ir, I also really want to have a minimal scheme-like ir form. as was tempted to parse -> minimal ir -> analytic ir. but minimal means lossy, and makes it harder for the programmer to chat with the compiler, so I thing parser-> heavy ugly analytic ir is the thing, at least to start with.
TimToady need to avoid that syndrome
yes, more like annotated parse tree than like bare semantic network 17:40
I'm allergic to forgetting things these days...
mncharity can then go minimal ir <-> analytic ir. and perhaps use the minimal ir to talk to other's compilers. scheme's stalin comes to mind. oh, that was the other argument for heavy ir. for using minimal to talk with others, you start hitting "well, it would really be more convenient talking with x if foo was instead done as bar". so it wasn't/isn't really clear that minimal ends up a language, or merely a language family. 17:41
"ugly heavy analytic ir that I hope gets thrown away" has the advantage of clarity. ;) 17:42
and of being able to be optimized for the task at hand, rather than making that more difficulty in search of poorly understood other objectives. so kiss. anyway, that's why I'm leaning towards heavy, for now, even if it makes tree transforms more problematic. 17:43
TimToady on the hoisting-ratchet topic, I'm not talking about something terribly difficult. It's actually fairly trivial--a prototype of the difference can been seen in metholate's wrapone sub. 17:44
mncharity backlogging... yeah, lossless also gives you better error messages.
re hoisting-ratchet, does that "performace is dreadful without ratchet, so you really really want to ratchet", or merely "just getting to ratchet, which is spec"? 17:45
TimToady cascading success doesn't have to be represented by non-empty lists under ratchet mode
mncharity :)
/does that mean/
TimToady gimme5 already does ratchet, but it's implied by all the spots that do ->[0] on a list of cursors
I'm just talking about how the STD5 bootstrap could eke out more performance 17:46
mncharity hmm. i've avoided looking in detail at the cursor/gimme5 guts. given they were in flux. sounds like its time to become familar with them. sigh, and with PCR. hmm, unless someone would like to volunteer? :) 17:47
TimToady the primary optimization would be to not call into Cursor code that generates cursors that are just going to be thrown away in a moment
since we really only need the cursors at sequence points like rule entry/exit
mncharity re 'just talking about...bootstrap', ah, it's not a general rx engine? ok, we need names... let's see... 17:48
TimToady my view of bootstrap is that eventually STD5 gets good enough to replace gimme5
and then you're almost home free 17:49
assuming, as you say, the edit/compile cycle is not too ponderous 17:50
mncharity () front-end "little" bootstrap - getting a p6 parser working, though one still doesn't have a p6 rx working. eg, a gimme6.p6 which text-massages STD.pm to executable p6. () front-end "big" bootstrap - possibly modified STD.pm runs on a normal general rx engine.
TimToady um, that doesn't make sense. STD.pm is already executable p6 (in theory) 17:51
mncharity yes but not (in practice)
TimToady do you mean subset executable by some back end?
that's pretty much an exact description of metholate :) 17:52
mncharity i'm still unclear on whether the guts of cursor/gimme5 are, or are envisioned as becoming, a general rx implementation.
TimToady yes, they are.
that's why metholate is called that... 17:53
it turns regexen into method calls that don't use regexen
and the intent is that the semantics be correct 17:54
performance is secondary, but occasionally thunk of
when you say "guts of g5" I presume you mean the algorithm, not the embodiment in p5 code. 17:55
mncharity so then the development path might be something like... as soon as there is a working elf, backport gimme5 changes into a metholate2, extract that rx implementation core into a directory somewhere, add test suite, and start banging on it. ?
TimToady I'd expect the bootstrapped STD to emit much the same metholated code from the regex bits
mncharity re gust, I was thinking both. so algorithm, no code? 17:56
TimToady elf = ?
mncharity elf_on_rakudo ^H elf_on_STD_red/elf_b or elf_c. a p6 to p5 compiler which runs fast and generates p5 which also runs fast. 17:57
elf for metholate2, as pugs was for metholate. 17:58
or a different vision?
TimToady I'm agnostic as to what the next STD5 emitter will be after p5 :) 17:59
mncharity hmm, me still fuzzy, let's see..
there's cheat|gimme5+cursor5 that eventually becomes a p6 -> match tree parser generated in p5. now there's the second part, 18:00
the algorithms not code of gimme5 and cursor5 constitute a spec general rx engine. 18:01
so that needs to be extracted? the algorithms rewritten in... p6? p5? 18:02
TimToady so we can replace gimme5 with std5+p5emitter
mncharity I don't understand "so we can replace gimme5 with std5+p5emitter"? 18:03
TimToady anything cheat/gimme5 does can be done better by an emitter working off the match tree produced by feeding STD.pm to std5 executable 18:04
mncharity ah, ok
TimToady and then you basically have a bootstrap, except for the parts that STD doesn't need that have to be filled in 18:05
but bootstrapped on the subset of p6 that STD uses 18:06
albeit perhaps with some chewing gum and bailing wire to emulate roles and such under p5
but then we could start moving to using Moose or some such
and the p5 emitter just gets more p6like, rather than just barebones what STD needs 18:07
mncharity STD.pm|cheat|gimme5+cursor5 == STD5_run. STD.pm|STD5_run|something_new == p6parser2. ...
TimToady for a correct bootstrap we must verify that STD|STD|STD... is stable, but initial loop is just an approx of that 18:09
stevan_ writes MooseX::Penicillin to help clear up all these STDs 18:10
TimToady probably sufficient that STD|STD5|STD5 is stable to begin with
or maybe that's the same thing :)
stds of all sorts come from too much studliness 18:11
mncharity so let's see... you're doing a combined <rx_engine+emitter_to_p5+grammar_fudge> bootstrap chain, on a fairly stable grammar, linked by each stage being able to use the preceeding stage's match tree? 18:12
TimToady with progressively less fudging 18:13
there's a metholation to my madness... 18:14
mncharity so the "something_new"... would be written in p5 or p6?
TimToady the emitter could be either, I presume 18:15
18:15 Psyche^ joined
TimToady could even be bootstrapped in p6 with a g5ish s/// approach 18:16
mncharity actually, has to be p5, unless you've been... eep
TimToady there's this huge advantage to the fact that p5 and p6 are closely related enough that you can do that :)
it's a really big lever--every time I change STD.pm, gimme5 can usually already translate that to p5 18:17
mncharity yeah. perhaps i should have said <rx_engine+s///-based-p6-compiler-and-emitter_to_p5+grammar_fudge>
TimToady there are many shades of purple 18:18
mncharity but STD5 doesn't actually itself _use_ parsed p6 at any point, no? 18:19
TimToady it does in the regexen
mncharity ah
TimToady that's what I mean when I say the regex parser in gimme5 is really a real parser 18:20
close to what STD does itself, albeit subsetted
mncharity so if I changed the Regex section of STD.pm, gimme5 would break?
TimToady no
mncharity or it's an independent, written in p5, 'real parser'?
TimToady p5
18:20 rindolf joined
TimToady that would be first step of the gimme->STD tranformation, to use STD's regex parser instead of gimme5's 18:21
mncharity so something_new won't be... well, will be, something new. it will be the first point at which the parse tree is actually used for code generation.
TimToady so don't even really need EXPR for that
except in a rudimentary fashion to parse the expressions in <EXPR(%additive)> and such 18:23
and of course closures remain opaque strings to be fed to the s/// engine at that point 18:24
the s/// engine doesn't have to be perfect, just good enough long enough :)
which is why I don't mind installing temporary # end class annotations in STD to help it along 18:25
and occasionally warp the p6 code into something slightly more s///able 18:26
(trying to stay officially p6 though)
once we have a real bootstrap we can remove such infellicities at our leisure
no rush, as long as it's officially p6 code, and as long as we can stand the klunkiness 18:27
the next best thing to removing a todo is deferring it till tomorrow. :) 18:28
mncharity ok. so STD5 is a is p6 dialect implemented in p5, with s/// based emitting, whose dialect encompasses... pause
lol
18:28 tobeya joined
mncharity encompasses externally conditioned STD.pm, whose purpose is... to be able to create a match tree for STD.pm. 18:29
TimToady s///-based initially, but not by continued necessity
the emitter can piecemeal switch from paying attention to ~$/ to paying attention to $/{} 18:31
mncharity so with STD5_run which can parse STD.pm done, the next bootstrap step would be something which: * can emit from that parse tree. * uses the rx engine algorithm (and maybe code) from STD5; * ... what else?
TimToady maybe fill out the subset of p6 that p5 can conveniently execute, or maybe move on to some other kind of emitter with a hope of running STD 18:33
like rakudo, assuming it continues to progress
mncharity ok, so the vision is not really one of a specific bootstrap chain, but rather "create something which can parse p6 and emit a parse tree", "while also spec'ing an rx engine", and then... assorted progress can then be made with those new components. 18:36
TimToady I'm certifiably organic. :) 18:38
mncharity so the spec rx engine... algorithms at least... is how mature? could someone start translating it into p6? hmm, though unless elf_on_STD_red works, there's no place p6 to run it? now that it's working(?), might pugs run in? or kp6? 18:40
TimToady hmm, I guess we're daylight savings time now, so the phone call is still more than an hour
mncharity eg, is working on the rx engine a separable task yet, or still too entwined in STD5? 18:41
TimToady as I said, metholate already pretty much translated to pugsian p6 18:42
likely it has suffered some bitrot, though metholate's bitrot is probably easier to fix than Cursor.pm (from which Cursor5.pm was derived once upon a time) 18:43
and I probably changed some things in cheat that metholate was relying on, but using a STD front end would fix that
mncharity but you've been doing a lot of work on gimme5. on algorithms too I thought. with algorithms still unfinished in g5. so... unless metholate has the real algorithms and g5 is still catching up? /me puzzled 18:44
TimToady correct, metholate doesn't have LTM yet
so basically we're talking backtranslation from gimme5 to a new "metholate"
or call it "gimme6"
mncharity :) 18:45
TimToady won't be difficult to do that translation, I think
in general p6 is slightly more powerful than p5 :)
18:45 cmarcelo joined
TimToady except for the parts that don't exist yet :/ 18:45
mncharity so the development path looks like * finish up the unfinished parts of gimme5, * someone(?) can then translate it into a gimme6? 18:46
18:46 gbacon joined
mncharity hmm 18:47
TimToady you think in bullets, I think in bullwhips :)
mncharity I guess one question is how separable the s/// based p6 handling is from the rx engine, or whether they are mixed together.
TimToady they both go crack though
mncharity though I guess even if mixed, the story is still at some point gimme5 is happily parsing STD.pm, and someone generates p6 intended to behave the same way. 18:49
TimToady typologically they're quite distinct, since you only ever use s/// on strings, not objects
mncharity yes, well, but. anyway. :)
oky 18:50
TimToady gimme5 makes an artifical distinction between line-based translation and shorter segments, and the regex engine only uses the non-line-based, iirc
and rule recognition is only line-based currently, so we don't do anything with embedded regexen 18:51
mncharity ok
TimToady that fixes itself as soon as we replace gimme5 with STD, presumably 18:52
mncharity so one possible collective development path would be to get an elf_on_STD_red working. a p6 implementation written in p6, which uses the STD_red_run generated parse trees to emit p5. when STD5_run works, it's swapped in for STD_red_run. and you thus instantly have working ast-based backends and such. 18:57
? 18:58
seems an easier second step than expanded s///-based p6 compilation. 18:59
TimToady ENOCLUE, my pert charts only go out about one step :)
mncharity :)
but the vision is definitely "get the parse tree, then start using it", yes? 19:01
TimToady I don't know if it's a vision, more like the tune from Close Encounters
but I know there's a mother ship out there somewhere... 19:02
mncharity which would seem to mean a STD5-ish, rather than kp6-ish or rakudo-ish parse tree. hmm, though the STD5_run parse tree is a bit odd still. 19:03
CE of the P6 Kind
"he suddenly started making piles of mashed...code at he dinner table?!?" 19:04
*the
TimToady well, and my unchecked-in code is different yet again...
mncharity (movie reference - mashed potatoes look like dreamt of mountain)
TimToady yes, got it
though mostly one didn't go to that movie to see it, but to listen to it 19:05
mncharity (was addenda for log clarity.) 19:06
TimToady six channel sound being a new thing at the time
mncharity one thing OLPC channels teach - annotate culture-specific references, or lose.
TimToady on the other hand, anyone who reads this log without expecting a few cultural allusions from time to time is going to be sorely disappointed 19:07
mncharity though a lot of nerd culture is international
re allusions, right :) 19:08
oky
TimToady and you can't always annotate everything, or you end up with the government
or xanadu, neither of which works... 19:09
if you're writing a book, you can at least make a guess at where the forward references are, but non-linear media subvert even that 19:10
mncharity xanadu, there was a loooong running joke. no way p6 can be the longest running unfinished unusable software development project ever. metal is taken. though we could try to find some things to patent, just to leaven "doesn't run" with silliness. 19:12
TimToady well, once p6 is out, duke nukem will be trivial to write :) 19:13
mncharity :) and xanadu. modulo patents. oh, patents are going to fun once we get started. so many folks have as their first line of defence "it's hard to implement", with patents second. with p6 to make things easier, we're going to start hitting seconds. :/ 19:15
19:16 alester joined
TimToady but then many more algorithms will be easily proven to be trival :) 19:18
mncharity "proven" at a few 100$US/hr.
nice in theory, kills startups in practice. 19:19
TimToady better than than a few $1M/violation
*that
I figure we can bring down the whole software patent system this way. get everyone addicted to p6, later people notice bits that they think they have patents on, everyone sues everybody, the courts melt down and throw out all software patents. :) 19:21
??? 19:22
profit
rindolf TimToady: is xanadu that hypertext thing?
TimToady *nod*
rindolf TimToady: wasn't udanax released a while ago?
TimToady too little, too late :) 19:23
mncharity the higher-order programming approach to patent breaking. a CPAN note: be advised if you call functions foo on "a function which sorts", you may be breaking silly patent NNNNN.
TimToady they needed to figure out the business model of "The first one's free, kid" before the web did.
19:23 cathya joined
TimToady and they didn't 19:23
PerlJam xanadu was from like 1969 or something wasn't it? 19:24
TimToady I wonder if I can patent a method of breaking the patent system?
don't know exactly--it had a good long run 19:25
SubStack there's loads of prior art for extortion
TimToady indeed, it's hard to stop paying protection money... 19:26
at least, if you value your kneecaps..
mncharity en.wikipedia.org/wiki/Project_Xanadu
lambdabot Title: Project Xanadu - Wikipedia, the free encyclopedia
mncharity so in the early 80's it was a long running funny. and it's kept going for an addition 2 decades. 19:28
admittedly, the web is a rather weak form of hypertext. and that will have to be addressed at some point. 19:29
TimToady it's those "caverns measureless to man" that eventually get to you...
well, arguably xanadu fell victim to the converse of that, expressed these days as YAGNI 19:30
mncharity c2.com/xp/YouArentGonnaNeedIt.html 19:31
lambdabot Title: You Arent Gonna Need It
PerlJam TimToady: but the allure of that "pleasure dome" keeps people showing up
mncharity lol
TimToady Annotations ŠÆ Us 19:32
rindolf mncharity: well, I recall a (paper) BYTE article about developments in the Web from a few years back, which had a box about several problems inherent to the HTML/HTTP stack.
mncharity yeah. broken links come to mind. it's just... it wasn't clear how to do better. still isn't to some extent. witness the many failed URN schemes. 19:34
TimToady it's even arguable whether forgetting things is *necessary* to global info health in some sense...
PerlJam I'd say that it is. 19:35
mncharity it may be "if the web had just chosen one, then that could have ridden to success on the web, rather than now having to fight to obtain a nitch in a mature ecosystem".
TimToady eventually your indexes get very complex if you have to remember everything
PerlJam TimToady: google doesn't seem to have a problem with it yet :)
TimToady google is just faking it 19:36
mncharity re forget, ok, but that doesn't mean links have to break. could just, be linked from fewer and fewer places. like an attic.
TimToady how does your GC know when the last one goes away?
PerlJam distribute the load. documents shouldn't be passive. When someone clicks on a link to nowhere, the "hypertext system" should annotate the link to say that it's broken and render it in such a fashion that it's clear to the user. 19:38
mncharity re gc, doesn't have to. that's a core characteristic of the space. content creation is increasing rapidly, so it's always cheaper to keep the "stuff which now seems old" around, rather than worrying about it. because more new stuff came in
recently, than all the old stuff combined.
TimToady "Look on my works, and despair!" is not sufficient technology to do it. :)
and as I say, it's not the info itself, but the multi-way indexing that doesn't scale 19:39
PerlJam I don't think we're quite ready to start building the encyclopedia galactica.
TimToady battlestar first...
mncharity I suppose the power curve might level off at some point, but such a small portion of the world pop is currently engaged in content creation, I don't expect "keeping old stuff is cheap" to change anytime soon. 19:40
TimToady there are many definitions of "keep"
PerlJam mncharity: and who would *Ever* need more than 64K of RAM?
TimToady I don't doubt that the vatican library keeps many interesting documents that I'll never see in my lifetime ;)
mncharity pictures the rfp on the deathstar. If the weight of the spec and docs exceeds the weight of the aircraft, then...
TimToady good thing they have antigrav tech 19:41
rindolf mncharity: what is rfp?
PerlJam mncharity: I think everyone with a cell phone will engage in content creation in the near future. Not to mention all the OLPC people. 19:42
TimToady "That's no moon! That's a Word document!"
PerlJam rindolf: request for proposals
TimToady Please give me a list of everyone who has photographed Mt Rushmore, ever...
mncharity re 64K, no, its a rate of change argument. if the 6th century produced fewer bytes than my morning incoming spam, then if I can keep the latter, I can keep the former. as long as the rate of change doesn't change, then keeping "everything written older than a decade" remains a small cost compared with "dealing with this month". 19:43
19:43 lichtkind joined
TimToady or, when we're all storing our visual logs permanently, who have even looked at Mt Rushmore 19:43
or a picture of Mt Rushmore
not even the universe tries to keep track of the relationship of everything to everything else 19:44
PerlJam mncharity: as long as the ratio of content creators to storage space remains as it is.
TimToady: we don't know that it isn't squirrelled away in another unseen dimension or something :P 19:45
TimToady I keep telling you, it's not the content that is the problem
This Was Your Life--Chick Publications
PerlJam TimToady: at some point it's the links that are the content.
mncharity re ratio, or cost to content creators of content creation, compared with the cost of content retention by content creators.
to be said 5 times fast
PerlJam heh, I had trouble reading it just once, let alone saying it 19:46
TimToady In space, no one can hear you scream content.
you're falling way behind on your annotations, mncharity :P 19:47
but then, that supports my theory. :)
mncharity drifting back towards p6... it looks like my path is now elf_on_STD_red. STD_red_run is almost working well enough to be used. so get it there, use it, and swap in STD5 when that is working too. 19:49
PerlJam can't help but think of the shining every time he sees STD_red_run
mncharity lol. ouch.
ah well. name and code gets tossed as soon as STD5 exists. 19:50
one of the nice things about bootstrap. you have less worry about people suffering decades hence from your thinkos and name choices. :) 19:51
TimToady: anything special about infix:<.> parsing come to mind? infix:<***> works fine, generating a Methodcall. but not dot. hmm... 19:58
this on STD_red_run. STD5_run works. :/
STD_red isn't quite synced any more. 19:59
TimToady phone in 1
PerlJam TimToady: If Pm shows up give him a hard time for talking on the phone while he's ostensibly on his honeymoon :) 20:00
TimToady lol
heh, busy! 20:01
got thru second time... 20:02
mncharity ah, post() is breaking it. let's see why...
20:13 marmic_ joined 20:14 barney joined 20:15 meppl joined
lichtkind TimToady: what was gimme5 again please? 20:18
TimToady a version of metholate that spits out p5 that compiles p6 20:19
lichtkind TimToady: sorry but cant remember what was metholate too :( 20:20
TimToady: i searched shatlog i t seems a translator of rules into function calls right? 20:21
mncharity: what is the difference between std redrun and std5run ? 20:24
TimToady a little distracted, because we're on the weekly phone call... 20:25
20:25 b_jonas joined
lichtkind allright 20:27
mncharity lichtkind: back, 20:43
20:44 rindolf joined
mncharity src/perl6/STD.pm is the p6, declarative (rather than directly executable (currently)), beginning of a spec for the p6 grammar. misc/STD_red/'s STD_red_run and std.rb is a hand translated ruby version of STD.pm, which runs. it is thus 20:45
most similar to src/perl6/'s STD5_run, which uses cursor5 and gimme5 in the same directory, which instead mechanically translate STD.pm to running p5 code. 20:46
this STD5 has been more focused on getting the real longest token parser story working, whereas STD_red has been more focused on getting to a usable parser quickly. 20:47
there's also misc/winter_jig/STD/STD_extract, formerly in src/perl6/ , which grovels over STD.pm and dumps various information about it. 20:48
metholate is equivalent to gimme5, but generates p6 rather than p5. it ran into difficulties working around pugs's p6 limitations. 20:49
so the current STD5 work is easily accessed as cd src/perl6; ./STD5_run ... which will run cat STD.pm|./cheat|./gimme5 for you if needed. 20:50
STD_red can be run by cd misc/STD_red; ./STD_red_run
lichtkind totally confused :) 20:52
mncharity compared with the cheat plus gimme5 or metholate, STD_extract is a "closer" scrape of STD.pm. As in, as STD.pm changes, things STD_extract no longer recognize will show up in the "stuff left over I didn't recognize" pile. Whereas cheat+etc, take a more s/// approach, and so are more silently fragile.
lichtkind: re confused, nifty :) opportunity. any particular part? 20:53
lichtkind mncharity: i will read you text several times and then ask :)
mncharity top level picture is src/perl6/STD.pm is a default grammar for the p6 language. challenge is to take this spec, and make it runnable. cheat with gimme5+cursor5, all in src/perl6/, make it runnable by converting it to p5. cheat with metholate, also in src/perl6/, make it runnable by converting it into p6 which pugs can run. 20:55
but the current focus of effort there is on the cheat with gimme5+cursor5 , which are together called STD5. 20:56
20:56 zonkers joined
mncharity ./STD5_run EXPR -e '3+4' gives you a parse tree for '3+4'. It's rather an dirty tree, so there is also a ./STD5_run_post postprocessor, which cleans up the output a bit. they perhaps should be combined. but for now, its ./STD5_run EXPR -e '3+4'|./STD_run_post 20:58
20:59 thoughtpolice joined
mncharity but even then, the outputed parse tree is a bit ugly. hasn't been a focus. 20:59
the STD_red_run parse tree is much nicer. ./STD_red_run -e '3+4'
lichtkind mncharity: i know even of a version of std.pm that is part of rakudo
mncharity you can also get a parse tree from parrot's rakudo. assuming you've installed and built parrot and parrot's language/perl6, the easiest way to run it might be misc/winter_jig/sixen/sixcmd rakudo --target=parse . 21:00
lichtkind mncharity: what exactly is cursor5 ?
mncharity hmm, though rakudo was broken a while back, not understanding -e , so it might have to be echo '3+4' > deleteme.pm; sixcmd rakudo --target=parse deleteme.pm 21:01
obra TimToady: I prodded my filters but your mail looks like it never got to me
lichtkind mncharity: i dont want to get involved in p6 hacking, have myself a pretty large project, i just write about
obra But the reply just now did :)
TimToady thinks it's spam maybe? 21:02
mncharity lichtkind: re just write about, ah well. :)
obra My spam filters didn't have it (and I actually archive all my spam, since I've had more than one false positive of the form "We would like to pay you $BIGNUM in exchange for your free software" ;) 21:03
But the new copy is here, so I'll not worry too much
mncharity re Cursor5, gimme5+cursor5, among other things, constitute a regex engine. Cursor5 is part of that. The "current parser state" i believe. 21:04
TimToady oh, you got the resend?
I misunderstood...
quite possible that my ISP dropped the original for some reason
lichtkind mncharity: i maintain an extensive perl 6 tutorial and write articles regularly about perl 6 21:07
mncharity my current task is to increase the range of p6 STD_red_run generates a nice parse tree for, and then slap a backend on it. as elf_on_rakudo did for rakudo's (using a scrape of the --target=parse output), before it turned out rakudo's parsing is a bit too slow for the envisioned development path.
s/rakudo's parsing is a bit too slow/rakudo's parsing was at the time a bit too slow/. It's been a few days - so perhaps that's changed. :)
21:08 drjay joined 21:09 FurnaceBoy joined
mncharity lichtkind: yes, sorry about the "ah well". :) a most useful thing to. I'd just forgot you were in writing not coding mode, and was thinking, "yay! a potential coder!". the "ah well" was my, oh, nope. 21:09
TimToady mncharity: did you ever get on the sixperl mailing list? 21:10
mncharity re stories, did you ever link to them here?
re mailinglist, any mailinglsit, "I hope not". 21:11
lichtkind mncharity: im not fluent enough with english to recognize such details imidiatly, im temted to hack on parrot but you know that would be the death of my child
TimToady low traffic, mostly just to review chromatic's phone notes before they're published 21:12
anyway, if you send chromatic a addr, I expect he can arrange for it somehow
mncharity found it. wiki.perl-community.de/bin/view/Wis...l6Tutorial and perl.net.au/wiki/Perl_6_Tutorial ? 21:15
lambdabot Title: PerlCommunityWiki ōæ½xBB Wissensbasis ōæ½xBB Perl6Tutorial
lichtkind mncharity: yes thats my work 21:17
mncharity: but the auwiki moved to tpf wiki were i now started to translate the german
mncharity and the tfp seems empty. perl.net.au/wiki/?title=Perl_6_Tuto...oldid=9108 has the pre-empty content. 21:18
lambdabot Title: Perl 6 Tutorial - PerlNet
mncharity and the german version is actually at wiki.perl-community.de/bin/view/Wis.../PerlTafel . sorry, didn't check them before posting. 21:19
lambdabot Title: PerlCommunityWiki ōæ½xBB Wissensbasis ōæ½xBB PerlTafel
lichtkind mncharity: tpf wiki is here : www.perlfoundation.org/perl6/index....rl_tablets
lambdabot Title: Perl Tablets / Perl 6
lichtkind but thats only beginning 21:20
i write also series of articles a different kind of tutorial for $foo magazine
www.perl-magazin.de/#d38
lambdabot Title: $foo - Perl-Magazin (Workshops, Module, News und vieles mehr)
lichtkind this will i also translate when i have time :) 21:21
mncharity so, wiki.perl-community.de/bin/view/Wis.../PerlTafel , old snapshot perl.net.au/wiki/?title=Perl_6_Tuto...oldid=9108 , new www.perlfoundation.org/perl6/index....rl_tablets , and empty www.perlfoundation.org/perl6/index.cgi?tutorial .
lambdabot Title: PerlCommunityWiki ōæ½xBB Wissensbasis ōæ½xBB PerlTafel
lichtkind mncharity: what is your question? 21:22
mncharity what's a "Tablets"/"tables"? chapter? section? /me goes to ask google...
lichtkind mncharity: i just wanted prevent namespace collision, in pugs svn is already a "tutorial" 21:23
mncharity no question, just remembered I wanted to look at your intro, the last time you mentioned it. now had a chance to find and look at it.
lichtkind mncharity: and tablets is a hint to emerald tablets
mncharity translate.google.com/translate?u=ht...p;ie=UTF-8 21:24
lambdabot Title: Translated version of wiki.perl-community.de/bin/view/Wis...sis/PerlTa ..., tinyurl.com/37n455
lichtkind mncharity: most work i done lately on articles which are in foo magazine but i have all rights to publish it freely
mncharity: which i will do on perl6::doc which i do maintain 21:25
mncharity translate.google.com/translate?u=ht...p;ie=UTF-8
lambdabot Title: Translated version of www.perl-magazin.de/#d38, tinyurl.com/2jn4p6
mncharity after having provided the translated foo link, doesn't look like there's anything there. clicking on the link gets nothing. ah well. 21:27
lichtkind mncharity: of course you have to buy am issue :) but like i said i will publish that freely 21:28
mncharity google translated the tutorial's Tafel as Table... but that seems very odd. at least for us eng.
lichtkind mncharity: i would it trnslate also this way :) 21:29
mncharity: this week i just want to get finished my current 2 articles and handout writing of talk at last german perlworkshop 21:30
mncharity: that was about somehing completely different but nevertheless important issue, desktop apps in perl 21:31
mncharity: in our forum im also "the wxperl guy :)" 21:33
mncharity re Table, ok, but seems an error to me. chapter, section, topic... others. but "table" suggests a short, generally less than one page, <table></table>-like thing.
lichtkind mncharity: that impression i want to keep and also want it to hold it sorted and short but you know perl 6 is so much stuff it cant be just one table 21:36
mncharity re wx, it will be fun to start adding gui support to p6. can wake up some of the old amulet-like constraint propagation stuff. NeXT DPS, etc. lots of deadish projects to scavenge nice ideas from :).
lichtkind mncharity: yeah wx on parrot would be a dream 21:37
21:37 Schwern joined
lichtkind for my project too 21:37
mncharity "quick ref"? cheat sheet? like www.zenspider.com/Languages/Ruby/QuickRef.html
lambdabot Title: Ruby QuickRef
lichtkind mncharity: but still i dunno diff between STD_red and STD_red_run
mncharity oh, misc/STD_red/ is a directory. it contains std.rb, the ruby version of STD.pm, and STD_red_run, a small script which makes running it easier. 21:38
lichtkind ah thanks 21:39
mncharity svn.pugscode.org/pugs/misc/STD_red/
lambdabot Title: Revision 20131: /misc/STD_red 21:40
pugs_svnbot r20132 | putter++ | misc/STD_red: infix:<.> now works. also non-prelude typenames. 21:47
diff: dev.pugscode.org/changeset/20132
lambdabot Title: Changeset 20132 - Pugs - Trac
21:49 Limbic_Region joined 21:53 meppl joined 21:56 LimbicRegion joined
zonkers ok, i figured out python services wow. how do i share a variable across threads. 22:01
22:02 jrockway joined 22:05 wtge1 joined
mncharity oh, neat. '_' is now an <alpha>. 22:09
zonkers: :) wrong channel perhaps?
pso.sourceforge.net/doc/pso-guide.html for the curious. 22:11
lambdabot Title: A quick guide to using pso
mncharity the SF one-liner is "pso- Python Service objects is a package that simplifies HTTP handlers: Built-in sessions. Write once run on modpython, modsnake, NASAPY, fastcgi, CGI. Easy interface to HTTP info. Simple, fast, robust and powerful extendable OO template parser." 22:12
wp says "Python Service Objects (PSO) is a software package that simplifies HTTP handlers. PSO was developed by Thanos Vassilakis in 1996, and was used for a series of first-generation internet casinos, including Caesars Palace, Can-Can, and LuckyNumbers. Later, it was used for the New York Stock Exchange's first internet-based service, the Specialist Portfolio (SPF 1998). SPF became the NYSE's third mainstream trading service."
22:14 marmic joined
mncharity wonders about defining '_' alpha if unicode does not(?). at least p5 [:alpha:] doesn't. but S05 says yes, to tally ho. 22:14
s/to tally/so tally/ 22:15
zonkers mncharity: sorry 22:17
mncharity zonkers: no problem. :) was interesting. 22:21
pugs_svnbot r20133 | putter++ | [STD_red] support for for() and $_ .
diff: dev.pugscode.org/changeset/20133
lambdabot Title: Changeset 20133 - Pugs - Trac
mncharity TimToady: fyi, STD5 given "class {}\nclass {}" stops after the first 'class {}'. STD_red is behaving similarly, stopping with a 'two terms in a row' panic. 22:27
22:28 wtge1 left
zonkers i can't wait until perl 6 is out 22:31
spinclad sounds like it needs to hallucinate a ';' at '}\n'
22:31 justatheory joined
Khisanth Perl 6 on drugs? 22:32
spinclad <- (not here. elsewhere. really. need to be.)
22:34 DarkWolf84 joined
mncharity zonkers: agreed 22:36
TimToady the test in stdstopper is incorrect 22:38
should be testing against $Ā¢.ws_from, not $Ā¢.pos, I think... 22:39
since $+endstmt is set to ws_from, which is before the newline 22:40
mncharity unrelated: given A.m().m() , one gets two infix:<.> %methodcall's, which don't have an assoc. so EXPR panics "Unknown associativity". perhaps methodcall assoc should be 'left'? 22:41
TimToady infix:<.> is only testing for misuse of p6's concat 22:42
mncharity re stdstopper, ah, ok. looking.
TimToady LTM should give .meth, but ordered rules may violate that
mncharity re '.', oh, hmm.
oh, duh. it's token infix:sym<.> ( --> Methodcall) is <obs>. hmm... 22:44
TimToady real .meth is a postfix, in any case, not an infix
so any real method would get eaten before <infix> ever gets a shot at it
mncharity hmm, so I wonder why EXPR is giving me infix:<.>... 22:45
TimToady <post> isn't working right from expect_term?
mncharity yeah, neither .m() nor .m are parsing as postfix. oky, will debug. 22:48
so should there really be a token infix:sym<.> ( --> Methodcall) ? 22:49
TimToady well, it's a panic, so it doesn't really matter what it tries to coerce to. :) 22:50
the rest of it is okay 22:51
probably should just leave the official return type unchanged though 22:52
mncharity puzzlement: how does A.m() get parsed? I'm not immediately finding a path which does the .m 22:58
STD5 doesn't parse it yet. 22:59
(so i can't simply look at the STD5 tree)
TimToady expect_term calls post, post calls dotty, dotty calls dotty:sym<.> 23:02
dotty:sym<.> calls dottyop, dottyop calls methodop
methodop calls ident 23:03
mncharity ah, oops. ok.
23:12 OuLouFu joined
mncharity yay. joys of handwritten scanners. this probably means I should write out the translation invariants and do a review pass, rather than debugging the individual instances. oh joy. 23:12
TimToady probably means you need to generate the scanner automatically :P 23:19
mncharity sigh. yeah. rsn. :) 23:21
so make() replaces the entire current match, or just the scalar value of the current match? 23:25
23:34 ikeda joined
TimToady just scalar value 23:34
mncharity why does expect_term make()? 23:36
TimToady to call nounphrase
which compares precedence of pre vs post ops 23:37
mncharity right, but why?
ah ok
TimToady because, while standard perl is not terribly ambiguous there, the user can define new prec levels
mncharity and the reason it goes in the scalar is... 23:38
TimToady because it's the invocant :)
and Match is derived from Capture 23:39
mncharity sigh
ah well. it was boring being a tree. now a graph. 23:41
TimToady bbl & # errands 23:42
mncharity cheers. thanks for the fish. 23:43
though the whole "smash the scalar value" still smells odd to me. 23:44
23:55 ikeda joined
mncharity ah, the STD_red endstmt handling is unlikely to be working anyway. other than 'commas after class {}', elf_one.p6 parses. even if it is just a shell. declaring 'success for now'. next step, elf_on_STD_red, and a filled shell. 23:55
hmm, stuffed shells. dinner. & 23:56
pugs_svnbot r20134 | putter++ | [STD_red] A.m() now parses properly. infix:<.> is gone. fulltypename and expect_term give Match()s. 23:57
diff: dev.pugscode.org/changeset/20134
lambdabot Title: Changeset 20134 - Pugs - Trac
23:59 ikeda joined