|
Parrot 3.2.0 released | parrot.org | Log: irclog.perlgeek.de/parrot/today | Parrot is accepted for GSoC 2011! Student application deadline is Apr 8 | Goals: Get more GSoC ideas on wiki; close tickets; stable 3.2 release; assess status of roadmap goals for 3/15 meeting. Set by moderator on 18 March 2011. |
|||
|
00:05
bacek left
00:06
dmalcolm left
00:12
nwellnhof joined,
contingencyplan left
|
|||
| mikehh | All tests PASS (pre/post-config, make corevm/make coretest, smoke (#12971) fulltest) at 3_2_0-36-g6e55eea - Ubuntu 10.10 i386 (g++-4.5) | 00:14 | |
|
00:14
contingencyplan joined
00:19
bbatha joined
00:32
bbatha left,
bubaflub joined
00:40
kid51 joined
00:44
kid51_at_dinner left
00:53
theory joined
01:00
nwellnhof left
01:03
woosley joined
|
|||
| soh_cah_toa | whiteknight: i got a question about the gsoc debugger | 01:11 | |
| dalek | rrot/m0-spec: 38207e6 | cotto++ | docs/pdds/draft/pdd32_m0.pod: clean up ffi examples and docs, avoid Excessive Capitalization |
01:13 | |
| cotto_work | soh_cah_toa: go ahead. There's a good chance someone else will know the answer to your question too. | 01:14 | |
| soh_cah_toa | the application template recommends a "deliverables" section. what exactly are the goals of the project? is it to write a whole new debugger or to further devlop the current one? | ||
| cotto_work | It depends on what looks like the best option based on the state of the existing debugger code. | 01:15 | |
| soh_cah_toa | well it sounds like most people don't even bother with it because it's very buggy. however, since i'm not very familiar with the parrot api, i'm not really able to tell where it would need work | 01:16 | |
| cotto_work | It does have some tests, so making those work and adding new ones as you add features would be a possible way forward. | 01:17 | |
| soh_cah_toa | test? you mean like the t directory? | 01:18 | |
| cotto_work | t/tools/parrot_debugger.t | 01:19 | |
| soh_cah_toa | alright, i'll take a look at it. i'm guessing the best approach would be to build upon what's already there in the debugger? | 01:20 | |
| cotto_work | soh_cah_toa: the tests may be valuable even if you decide to start from scratch | 01:22 | |
| My inclination would be to build on what's there, but I don't know the state of the code. | |||
| soh_cah_toa | okay | ||
| cotto_work | If you want to get your hands dirty, add a feature to it and see how hard it is. | ||
| soh_cah_toa | alright | 01:23 | |
| cotto_work | optional, but highly recommended | ||
| wknight8111 | soh_cah_toa: you have to pick what project you want to do | ||
| soh_cah_toa: there are lots of options. you can choose to rewrite the old debugger or write a new one | |||
| My personal preference is for a new debugger, but you may decide that's not the best idea | 01:24 | ||
| soh_cah_toa | yeah, that's what i'm trying to decide | ||
| cotto_work | Yes. The suggestions on the wiki are only suggestions. | ||
| wknight8111 | other devs may have other preferences too | ||
| plobsing | I'd really like the debugger be able to use arbitrary HLLs that expose a REPL API. | 01:25 | |
| bonus points if it is smart enough to default to the HLL I'm currently in | 01:26 | ||
| mikehh | soh_cah_toa: we had a dev who started re-working the debugger about 6 months or so ago, but then dropped out of sight | 01:27 | |
| soh_cah_toa | oh man, he didn't leave any of his work around did he? | ||
| cotto_work goes home | |||
| mikehh | soh_cah_toa: he commited a lot of stuff and was doing quite a bit of work, then vanished, probably $work problems | 01:29 | |
| soh_cah_toa | where could i find it? | 01:30 | |
| wknight8111 | mikehh: which dev was reworking the debugger? | ||
| dalek | rrot/m0-spec: 53bb8c1 | util++ | docs/pdds/draft/pdd32_m0.pod: Fix typo in pdd32_m0.pod |
01:32 | |
| rrot/m0-spec: 0e5d61a | util++ | docs/pdds/draft/pdd32_m0.pod: Fix typo in pdd32_m0.pod, again |
01:36 | ||
| mikehh | wknight8111: Paul_The_Greek I think it was about six months ago | 01:38 | |
|
01:40
wknight8111 left
|
|||
| Util | wknight8111, mikehh: Looks like commit 2976f129f4ad606029913af39c1d675df7db3da1 Author: Paul C. Anagnostopoulos <paul@windfall.com> Date: Wed Sep 15 17:44:16 2010 +0000 First round of improvements to Parrot debugger | 01:40 | |
| soh_cah_toa: git show 2976f129 | 01:43 | ||
| soh_cah_toa | thanks | 01:44 | |
|
01:47
plobsing left
|
|||
| soh_cah_toa | plobsing mentioned a repl but don't you already have that with the eval command? | 01:48 | |
|
01:52
Eduardow left
|
|||
| dalek | rrot/opsc_llvm: 1594ff8 | jkeenan++ | / (2 files): Use 'llvm-config' to simplify probe for LLVM; adjust tests accordingly. |
01:52 | |
|
01:55
Eduardow2 joined
|
|||
| soh_cah_toa | i can tell you this: if i do get to work on this durring the summer, the first thing i'm gonna do is properly comment the source code. besides pod, there's only about 4 comments in 355 lines of code | 01:57 | |
| it's driving me crazy :) | |||
|
02:01
cotto joined
|
|||
| kid51 | soh_cah_toa: Which source code file are you referring to? | 02:04 | |
| soh_cah_toa | frontend/parrot_debugger/main.c | 02:05 | |
| cotto | ~~ | ||
|
02:06
cosimo joined
|
|||
| soh_cah_toa | i think it might be a good idea to implement gnu readline in the debugger. i don't know about you guys but i use those shortcuts A LOT at the shell | 02:09 | |
| kid51 | Actually, compared to some of our other source code files, that file has considerable POD :-) | ||
| Whether the POD is correct is another matter. | |||
| soh_cah_toa | i meant besides pod. comments on the code | ||
| kid51 | soh_cah_toa: Well, FBOW, that's typical of our .c code. It does not tend to have a lot of inline comments. | 02:10 | |
| We have codingstd tests to measure the POD, but you can't really test for inline comments. | |||
| cotto | soh_cah_toa, rlwrap | 02:13 | |
| soh_cah_toa | rlwrap is just a command though, right? it doesn't have an api or anything | 02:14 | |
| or does it? i'm not sure | 02:15 | ||
| cotto | I doubt it does. I'm just saying that readline integration is less important when rlwrap can do most of the job | 02:16 | |
| soh_cah_toa | oh yeah. that defintely would be towards the bottom of the "to-do list". just something i quick thought of | 02:17 | |
|
02:21
kid51 left
02:30
plobsing joined
02:35
soh_cah_toa left
02:44
bubaflub left
02:45
cognominal left
03:22
jsut joined
03:27
jsut_ left
03:40
Eduardow2 left
04:10
theory left
04:21
theory joined
|
|||
| plobsing | NotFound: does winxed have a mechanism for namespaced instanceof (eg: "a instanceof A.B")? is one planned? Or should I just use a clunky get_class? | 04:24 | |
|
05:03
particle1 is now known as particle
|
|||
| cotto | dukeleto, ping | 05:19 | |
| dukeleto | cotto: pong | ||
| cotto | dukeleto, I'm wondering if it makes sense to pass the context around as an explicit argument | ||
| If everything's indexed off it, that makes for a bit of a bootstrapping problem | |||
| (referring to M0 ops) | 05:21 | ||
| dukeleto | cotto: what is the bootstrapping issue? | ||
| cotto | we need the context to know how to access the context | 05:23 | |
| actually, I may be thinking about this wrong | 05:24 | ||
| sorear | that's what I said earlier | ||
| cotto | We don't necessarily need to have the context in bytecode. | ||
| sorear, that's why I've been thinking about it | |||
| sorear++ | 05:25 | ||
| I think it'd work if each op takes three explicit arguments and implicitly gets a pointer (or equivalent) to the current context. | 05:28 | ||
| dukeleto | cotto: yes | ||
| sorear | Do we expect to be generating M0-code in normal use of Parrot? | 05:32 | |
| e.g. will "eval" create new M0-bytecodes? | |||
| cotto | sorear, define "normal use" | ||
| sorear | cotto: "not opsc" | ||
| cotto | as in build, hll build, hll use, etc | 05:33 | |
| sorear | hll use | ||
| cotto | I'd expect hll code to get compiled down to m0 | 05:34 | |
| dukeleto | "hilarity and segfaults are likely"... | 05:38 | |
| cotto | I'll be here all week. | ||
|
05:48
ShaneC left
05:49
theory left,
estrabd left
05:51
bacek joined
06:00
ShaneC joined
06:08
mtk left
|
|||
| cotto sleeps | 06:14 | ||
|
06:14
mtk joined
06:15
bacek left
07:06
rurban_ joined
07:09
rurban left,
rurban_ is now known as rurban
07:22
fperrad joined
07:33
cognominal joined
07:51
contingencyplan left,
ShaneC left
07:52
ShaneC joined
|
|||
| dalek | rrot/m0-spec: 3ffacfb | dukeleto++ | docs/pdds/draft/pdd32_m0.pod: Improve abstract |
08:05 | |
| rrot/m0-spec: 07b99a7 | dukeleto++ | docs/pdds/draft/pdd32_m0.pod: Improve some definitions |
08:38 | ||
|
08:42
mj41 joined
|
|||
| dalek | rrot/m0-spec: 84426ea | dukeleto++ | docs/pdds/draft/pdd32_m0.pod: Clarify some points about a MOP and concurrency |
09:20 | |
|
09:28
woosley left
09:31
rohit_nsit08 joined
|
|||
| rohit_nsit08 | hello everyone | 09:31 | |
|
09:33
RonLinix joined
|
|||
| dukeleto | rohit_nsit08: howdy | 09:36 | |
| rohit_nsit08 | dukeleto: hi , | ||
| RonLinix | hi :) | 09:37 | |
| rohit_nsit08 | is anybody working on implementing javascript compiler on parrot? | ||
| dukeleto | rohit_nsit08: you and me :) | ||
| rohit_nsit08 | dukeleto : sure :-) | 09:38 | |
| dukeleto : i have done some coding in javascript and right now looking at javascript compilers , what else do i need to see ? | 09:46 | ||
| dukeleto | rohit_nsit08: learn about grammars and compilers | 09:56 | |
| rohit_nsit08: read about PEG.js and about PEG's | |||
| rohit_nsit08 | dukeleto : i'm on it , what is lexical analysis? | ||
| dukeleto | rohit_nsit08: analyzing some abstract represenation of the source code, basically | 09:58 | |
| rohit_nsit08: a parser reads the actual source code, and turns that into a data structure. the lexer (lexical analysis) is taking that data structure as input and performing tranformations on it | |||
| rohit_nsit08: these are very good questions, but I must sleep soon | 09:59 | ||
| rohit_nsit08 | dukeleto : it's quite interesting :-) | ||
| dukeleto : are u one of the mentors? | |||
|
09:59
RonLinix left
|
|||
| dukeleto | rohit_nsit08: write down all your questions and email parrot-dev :) There are a lot of people on there way smarter that me | 09:59 | |
|
10:03
cosimo left
|
|||
| dukeleto => self.sleep() | 10:04 | ||
|
10:05
RonLinix joined
|
|||
| rohit_nsit08 | hi , which data structure is used to represent parser's output? | 10:06 | |
| moritz | a parse tree | 10:33 | |
| general questions lead to general answers :-) | |||
| rohit_nsit08 | hi, i wanted to set up development environment for parrot on fedora 13 . what's the best way to go for this , i believe cloning git repository will serve the purpose, pls guide if i'm missing something | 10:52 | |
| moritz | yes, cloning from github is a good step | 10:58 | |
| then follow the README | |||
| and ask here when things are unclear | |||
| rohit_nsit08 | moritz: thanks i'm clonig | 11:00 | |
| cloning* | |||
| i have one silly doubt , the cloned source code is much larger than what i get in tar file , what is there extra in cloned source code? | 11:04 | ||
| moritz | rohit_nsit08: the .git directory stores the full history of all changes in the source code | 11:06 | |
| rohit_nsit08 | hmm.. that means i can revert back to previous versions? | 11:08 | |
| moritz | yes | 11:09 | |
| try | 11:10 | ||
| git log | |||
| to see the past commit messages | |||
| and 'git tag' shows you specially-named snapshots (usually released versions) | |||
|
11:10
preflex left
11:13
preflex joined
11:14
RonLinix left
|
|||
| rohit_nsit08 | moritz : thanks, i was interested in implementing javascript compiler on parrot , i read that it was proposed by whiteknight , can u tell me who will be the possible mentors for the project | 11:17 | |
| moritz | rohit_nsit08: maybe whiteknight or dukeleto | 11:18 | |
| rohit_nsit08: though we have lots of good hackers around here that could be mentors for such a project | |||
| rohit_nsit08 | moritz: i just had some talk with dukeleto , and cleared some of my doubts , i know javascript and read about the jison and cafe , i wanted to know what topics in javascript should i see to gain more insight into the project | 11:21 | |
| moritz | rohit_nsit08: when you write a compiler you need to understand the low-level features of a language: lexical conventions, scoping, the OO model (javacript's objects and prototypes) | 11:23 | |
| and of course you need to know how to write a compiler | |||
|
11:41
lucian joined
11:44
kid51 joined
12:12
ambs joined
12:15
rohit_nsit08 left
12:20
kid51 left
12:21
samwho joined
12:25
samwho left
12:30
rohit_nsit08 joined
12:43
whiteknight left
|
|||
| rohit_nsit08 | whiteknight: there? | 12:44 | |
|
12:45
whiteknight joined
|
|||
| whiteknight | good morning, #parrot | 12:46 | |
| moritz | hi whiteknight | 12:47 | |
|
12:49
Eduardow joined
|
|||
| whiteknight | good morning, moritz | 12:49 | |
| rohit_nsit08 | whiteknight: hi , i was doing some read on javascript compiler for parrot , how should i start i mean shall i learn to write PIR code in parrot or concentrate on parser etc ? | 12:51 | |
| whiteknight | hello rohit_nsit08, welcome to #parrot | 12:52 | |
| Coke is willing to be a mentor for GSOC. | |||
| whiteknight | rohit_nsit08: PIR is like our version of assembly. It's nice to know so that you know what the underlying machine is using, but few people want to write real code in assembly | ||
| rohit_nsit08 | whiteknight: sorry but i haven't coded in assembly so far , but quite used to coding in javascript and c and java | 12:53 | |
| whiteknight | right, that's my point. nobody writes code in assembly | 12:54 | |
| moritz | and it can be learned, like every other skill | ||
| whiteknight | rohit_nsit08: there are other languages, such as NQP or Winxed, which do most of the same stuff but are nicer to write | ||
| rohit_nsit08: or, better yet, if you write your compiler in javascript, all you need to do is write a code generator which writes code in some parrot language | 12:55 | ||
| rohit_nsit08 | whiteknight: loll, do i need to learn assembly for the compiler project ? | ||
| whiteknight | no, I'm saying you shouldn't | ||
| rohit_nsit08 | whiteknight: that's why i asked , my interpretation of the project was to write a javascript compiler in javascript that can convert javascript code in other parrot supported language | 12:56 | |
| whiteknight | right, that's the preferred (in my opinion) method of doing it. So if that's the path you want to take, you need to pick the target language you want your compiler to generate | 12:57 | |
| lucian | and PIR is one of the possible target languages | 12:58 | |
| whiteknight | PIR is a fine choice. Winxed is fine. NQP is fine too | ||
| If it were me, I would probably not pick PIR | |||
| but, then again PIR is more atomic might be easier | |||
| lucian | whiteknight: i'm not so sure about that | ||
| whiteknight | not so sure about what? | ||
| moritz | you can use another javascript compiler for bootstapping | ||
| *strappin | |||
| g | |||
| lucian | whiteknight: i can think of cases where encoding python/js semantics in winxed is awkward | ||
| moritz can't type | |||
| lucian | whiteknight: but less so in PIR | 12:59 | |
| lucian has go to. good bye and good luck | |||
| whiteknight | lucian: like I said, PIR is more atomic | ||
|
12:59
lucian left
|
|||
| moritz thinks that PAST would be a good target language... just sayin' | 12:59 | ||
| whiteknight | PAST isn't really a language. That is, there isn't a syntax for PAST separate from other languages | 13:00 | |
| moritz | ok, s/language/"language"/ | ||
| whiteknight | that said, a textual representation of PAST, and a suitable compiler for it, might be very nice | ||
| rohit_nsit08: sorry, I'm sure we're confusing you | 13:02 | ||
| rohit_nsit08 | whiteknight: ya sort of | ||
| whiteknight : so which one is more better for compiler project , i read PIR tutorials and seemed easy to grab | 13:03 | ||
| whitenight : didn't saw PAST so can't comment | |||
| whitenight : rightnow i'm cloning parrot from git | 13:04 | ||
| whiteknight | rohit_nsit08: don't worry about PAST, that's not something you would be working on this summer anyway | ||
| rohit_nsit08 | whiteknight: ok, so i think i should focus on PIR | ||
| whiteknight | rohit_nsit08: My recommendation is that you take an existing compiler, or an existing compiler idea (cafe, Jaspers, etc), and write a backend for that which emits PIR | 13:05 | |
| rohit_nsit08 | whiteknight: i did some hack on cafe today , still working on it | ||
| whiteknight: so i should write a backend code in javascript for cafe which will produce PIR code and i'll test that PIR code on parrot plateform | 13:06 | ||
| whiteknight | basically, yes | 13:07 | |
| although, that project may turn out to be too small to fill the whole summer, if you're a really bang-up programmer | |||
| so you're also going to want to figure out what to do after that | |||
| rohit_nsit08 | whiteknight: writing compiler seemed quite interesting to me , and debugger can be a good addition to this if compiler finishes on time | 13:08 | |
| whiteknight | we have at least one other student interested in working on a parrot debugger | ||
| moritz | whiteknight: remember that the compiler also needs to some with some built-ins | ||
| s/some/come/ | 13:09 | ||
| those that can't be written in pure JS, like Object | |||
| whiteknight | moritz: javascript does have common.js, which acts something like an accepted standard library | ||
| I suspect the hardest part of the javascript compiler will be eval(), the compreg object and API, etc | |||
| also, the object model could be a big issue | |||
| not because it won't work, but because the naive approach is going to be dirty slow | 13:10 | ||
| rohit_nsit08 | whiteknight: how many students are supposed to taken for any project ? | ||
| whiteknight | rohit_nsit08: We don't know how many students we will be allocated this year | ||
| in years past, we worked with the Perl foundation, and had about a dozen or more slots to share | 13:11 | ||
| moritz | last year we had 4 or so parrot related projects, but we were und the umbrella of The Perl Foundation | ||
| it really depends on the number of good applications | 13:12 | ||
| whiteknight | I suspect (hope) that we will have about 6-10 slots, especially since we've been so successful in years past with GSoC and GCI | ||
| yes, moritz is right. We need lots of good applications | |||
| moritz | 10 would be rather surprising, given that there are more organizations this year | ||
| whiteknight | yes, that's true. Though many are smaller organizations. Plus, Parrot has been very productive in years past | 13:13 | |
| rohit_nsit08 | whiteknight: hmm.. that was good to hear :-) i think compiler project can have only 1 student . | ||
| whiteknight | like I said, it's a hope | ||
| rohit_nsit08: yes, the JavaScript compiler will only have 1 student on it, and a mentor | |||
| after the summer is over, more people may get involved | |||
|
13:14
plobsing left
|
|||
| rohit_nsit08 | whiteknight: so , who will be the possible mentor ? ya i think it will be good to continue my work after the summer if i work on any project | 13:14 | |
| whiteknight | rohit_nsit08: Depending on the proposals we get, I could be a mentor for the JavaScript project | 13:15 | |
| dukeleto has suggested he might be interested | 13:16 | ||
|
13:16
mtk left
|
|||
| whiteknight | other people might too | 13:16 | |
| Coke | I would definitely volunteer for the JS one. | ||
| whiteknight | ah yes, Coke would be a good possible mentor | ||
| rohit_nsit08 | whiteknight: i guessed that from your blogs :-) . helped me to stay on right track | ||
| moritz | lots of options. Quite many people here know enough about JS and compiler writing | 13:17 | |
| whiteknight | yes, it's going to be a well-supported project | 13:19 | |
|
13:21
mtk joined
13:27
woosley joined
|
|||
| rohit_nsit08 | whiteknight: i cloned cafe , there is a makefile but make is giving error, do i need something else on which cafe depends ? | 13:30 | |
| whiteknight | rohit_nsit08: I don't know about cafe, I haven't tried to make it in a while | ||
| last time I tried, I remember that the make system was not very robust | |||
| you need to have node.js in your system already, I think | 13:31 | ||
| rohit_nsit08 | whiteknight: ok , in makefile there is a refrence to narwhal , do i require narwhal too | ||
| whiteknight | or maybe narwhal | ||
| yeah, get narwhal | |||
| that's another JS compiler | |||
| I think narwhal is just a wrapper around Rhino | |||
| rohit_nsit08 | ya narwhal , i guessed that , ok i'll get it | ||
| whiteknight | I can't keep it all straight | ||
| rohit_nsit08 | whiteknight: no problem , i read about narwhal also today | 13:32 | |
| whiteknight | okay, good | ||
| rohit_nsit08: your compiler project is going to need to be bootstrapped, if you're going to write it in javascript. So you're going to need to get very familiar with your "stage 0" compiler, because that's the start of the process | 13:33 | ||
| in this particular case, narwhal is your "stage 0". You will use narwhal to compile your "stage 1", which is your own compiler, written in javascript | |||
| stage 2 is using your compiler to compile itself | |||
| once you get to that point, save your stage 2, and use it for the next sequence | 13:34 | ||
| make a change, use the old version of your compiler to compile the new version | |||
| save the new version. Repeat | |||
| it's like hitchhikers guide to the galaxy, you fly by falling down and forgetting to hit the ground | 13:35 | ||
| rohit_nsit08 | whiteknight: so narwhal is the first step , btw i had one doubt about node.js isn't it something related to network programs (as given on the site) , what exactly node.js is? | ||
| whiteknight | rohit_nsit08: I think node.js is a normal js compiler too, except it specializes in asynchronous IO requests | 13:36 | |
| node.js is just a command-line wrapper and a runtime library built around Google's V8 | |||
| I think it would be usable for this | |||
| rohit_nsit08 | whiteknight: that can be the case , ok so which one will u advice , narwhal or node.js ? since cafe's makefile contains narwhal so i think narwhal will be a good choice? | 13:38 | |
| whiteknight | rohit_nsit08: if cafe is the compiler you want to start with, narhwal is probably the obvious choice | ||
|
13:39
lucian joined
|
|||
| rohit_nsit08 | ok than i'll go with narwhal , is there any other option other than cafe , there is very less documentation about cafe | 13:39 | |
| PerlJam | doesn't narwhal also have some packaging infrastructure that node.js doesn't? | ||
| rohit_nsit08++ btw | |||
| rohit_nsit08 | PerlJam: hi | 13:40 | |
| PerlJam | you get pre-karma in anticipation of some good JS work :) | 13:41 | |
| rohit_nsit08 | PerlJam: :-) | 13:42 | |
| lucian | i'm sorry, how is narwhal a js compiler? | ||
| i thought it just used rhino | 13:43 | ||
| did i misread the backlog? | |||
| lucian has misread the backlog | 13:44 | ||
| lucian apologises | |||
| mikehh | All tests PASS (pre/post-config, make corevm/make coretest, smoke (#13011) fulltest) at 3_2_0-36-g6e55eea - Ubuntu 10.10 i386 (gcc-4.5 --optimize --gc-gms) | 13:46 | |
| rohit_nsit08 | narwhal supports many other engines also except rhino | 13:47 | |
| whiteknight | so what, exactly, is narwhal? just a thin wrapper around other engines? | 13:50 | |
| lucian | whiteknight: yeah | ||
| rohit_nsit08: i just noticed, cool | |||
| whiteknight: it's a "shell" | 13:51 | ||
| whiteknight | oh, nice | ||
| rohit_nsit08 | whiteknight: ok, narwhal is working fine on my system | ||
| whiteknight | awesome, good first start | ||
| lucian | from what i understand, node.js is an equivalent to narwhal. much smaller and more focused on network stuff | 13:52 | |
| whiteknight | yes, I think node.js does have that speciality in terms of its runtime library, but it still should be usable as a general command-line js interpreter/compiler | ||
| rohit_nsit08 | whiteknight: i think cafe requires jison also , is it? | ||
| lucian | wait, no. node.js is just v8 + libevent | 13:53 | |
| whiteknight: yeah, v8 does that anyway | |||
| whiteknight | rohit_nsit08: Probably. jison is written by the same guy. jison is the parser | ||
| rohit_nsit08: I don't know if cafe comes with jison, or requires it separate | |||
| rohit_nsit08 | whiteknight: when i try to make cafe , it is using jison command which is not found | 13:55 | |
| lucian | i thought cafe includes the parser output by jison | ||
| rohit_nsit08 | lucian: hmm , but it's showing that jison: command not found | ||
| whiteknight | rohit: okay, get jison. I think narwhal has a package manager which you can use to get it quickly | ||
| rohit_nsit08 | lucian: i'm trying to make cafe , since there is makefile in it, is that the correct way ? | 13:56 | |
| whiteknight | tusk | ||
| narwhaljs.org/packages.html | |||
| lucian | npm install jison should fix that | ||
| wait, npm is nodejs | 13:57 | ||
| whiteknight | yeah, i think it's tusk install jison | 13:58 | |
| type "tusk help" for help | 13:59 | ||
| rohit_nsit08 | whiteknight: doing that | ||
| whiteknight | awesome | 14:00 | |
| rohit_nsit08 | whiteknight: "tusk help " on commandline is giving some error | ||
| Error occurred during initialization of VM | |||
| java/lang/NoClassDefFoundError: java/lang/Object | |||
| lucian truly hates most js tracebacks | 14:01 | ||
| rohit_nsit08 | is there any problem with the narwhal installation or it has to be typed somewhere else | ||
| lucian | it has no help, i think | ||
| oh, it should have | 14:02 | ||
| rohit_nsit08 | other way can be to get jison from jison's repository but i doubt that will work | ||
| let me read about narwhal , i must be missing something | 14:03 | ||
| lucian suggests trying nodejs | |||
| rohit_nsit08 | but cafe requires narwhal , can it be avoided? | 14:04 | |
| lucian | i'm pretty sure it works fine with nodejs | ||
| rohit_nsit08 | ok than i'll get nodejs , but i doubt about the makefile in cafe , it uses narwhal , if i have to use nodejs we'll have to do something about that too | 14:05 | |
| isn't it | |||
| do i need to initialize vm before using tusk command | 14:11 | ||
| ? | |||
| hmm i went to narwhal's irc ,no reply so far :-( | 14:13 | ||
| lucian | i've only ever used node, so i don't know, sorry | 14:14 | |
|
14:15
Andy_ joined
|
|||
| whiteknight | the makefile for cafe is extremely simple | 14:15 | |
| I'm sure it's possible to redo it with node | |||
| rohit_nsit08 | lucian: ok i'll see what i can do about it | ||
| whiteknight | rohit_nsit08: part of the javascript compiler project will be making a build system that doesn't have these problems | 14:16 | |
| rohit_nsit08: so take notes, and do it better yourself | |||
| lucian | i'm pretty sure i ran a js parser on node, i'm not sure if it was cafe | ||
| rohit_nsit08 | whiteknight: i read that file , so my first job is to make cafe work with node | 14:17 | |
| whiteknight | rohit_nsit08: good first plan | 14:25 | |
| lucian | whiteknight: Cake works | 14:26 | |
| whiteknight: github.com/jashkenas/coffee-script...ake.coffee | 14:28 | ||
| whiteknight | i find it hard to think of "cakefiles" without smirking | 14:29 | |
|
14:29
contingencyplan joined
|
|||
| lucian nods | 14:30 | ||
| lucian smirks | |||
| quite nice though, jashkenas.github.com/coffee-script/ (search for cakefile) | |||
| moritz | is js designed to make you hungry? | 14:33 | |
| lucian | moritz: it's undesigned to make you crazy. but hunger is a common side-effect | 14:35 | |
|
14:46
plobsing joined
|
|||
| rohit_nsit08 | whiteknight: i have installed node.js but there is no further directions to go , the more i read about node , more it looks like it's something for network applications like chats , still confused what node.js is | 14:49 | |
| lucian | rohit_nsit08: try npm install .... | 14:50 | |
| rohit_nsit08: node.js is 1) cli interpreter 2) network library | |||
| rohit_nsit08 | and i have to be concerned about cli interpreter only i guess | 14:51 | |
| lucian | yep | 14:52 | |
| and npm is its package manager | |||
| rohit_nsit08 | npm install is not working , do i need to do something after installing the node.js | ||
| start some service etc | |||
| i installed it in my home directory and set the path variables as given on their site | 14:53 | ||
| whiteknight | the hardest part of this whole project may be just getting an existing compiler to work | 14:54 | |
| rohit_nsit08 | i'm getting a good feel of that loll :-) ok can u give me an example command , npm install ________ i think i've got how to use it | 14:55 | |
|
14:56
woosley left,
dmalcolm joined
|
|||
| lucian | npm install jison | 14:56 | |
|
14:57
PacoLinux joined
|
|||
| rohit_nsit08 | lucian: for my surprise , npm was not installed by default in node.js but after installing it using curl , now it's working finally :-) | 15:00 | |
| whiteknight: jison installed | |||
| whiteknight: finally | |||
| whiteknight | awesome | 15:01 | |
|
15:03
samwho joined,
samwho left
|
|||
| dalek | TT #2056 created by usvhkdpkojwxyilj3++: Memory card Data Recovery - A real advantage to extract lost information ... | 15:04 | |
| TT #2056: trac.parrot.org/parrot/ticket/2056 | |||
| rohit_nsit08 | whiteknigt: pls suggest me how to approach for making cafe work on node.js , or more importantly what should be the outcome | ||
|
15:06
rurban_ joined
15:09
rurban left,
rurban_ is now known as rurban
|
|||
| lucian | rohit_nsit08: doesn't it work already? | 15:09 | |
| rohit_nsit08 | node and npm are working , jison is installed properly | 15:10 | |
| how can i test if cafe is working too | |||
| lucian | rohit_nsit08: can't you run it? | 15:11 | |
| rohit_nsit08 | remember that makefile ? cafe is designed to work with narwhal i suppose | ||
| or am i wrong here? | |||
| lucian | rohit_nsit08: replace narwhal with nodejs | ||
| rohit_nsit08 | let me try | ||
|
15:12
mj41 left
|
|||
| rohit_nsit08 | jison lib/js/grammar.jiy lib/js/lexer.jil | 15:17 | |
| make: jison: Command not found | |||
| it's giving error | |||
|
15:18
Psyche^ joined
|
|||
| lucian | rohit_nsit08: jison in path? | 15:18 | |
|
15:18
Patterner left,
Psyche^ is now known as Patterner
|
|||
| rohit_nsit08 | i installed jison from npm so it must be | 15:18 | |
| lucian | check | 15:19 | |
|
15:21
rohit_nsit08 left
15:22
rohit_nsit08 joined
|
|||
| rohit_nsit08 | lucian: sorry my net connection went off | 15:22 | |
| no jison is not in PATH variable | 15:23 | ||
|
15:24
ambs left
15:25
bacek joined
|
|||
| lucian | rohit_nsit08: perhaps npm puts all its binaries in one place and you can add that to PATH | 15:28 | |
| rohit_nsit08 | lucian: i think i realized what the problem is , in fedora i have faced problem in setting permanent environment variables , i just checked the path variable and all the changes i made few hours ago are not there ( i rebooted the system 5 mins ago) | 15:30 | |
| moritz | you can change PATH permanantly in your ~/.bashrc (assuming you're using bash) | 15:31 | |
| lucian | or in ~/.profile, but make sure your shell picks that up | ||
| rohit_nsit08 | ya i remembered i had to do that when last time i faced such problem | 15:32 | |
| dalek | TT #2057 created by koscucqjxjrfgbly6++: What about considering homeschool for your youngster? | 15:36 | |
| TT #2057: trac.parrot.org/parrot/ticket/2057 | |||
| whiteknight | wtf is up with all this trac spam recently? | 15:40 | |
| moritz | sombody wrote a bot that automates it | 15:41 | |
| and it now found trac.parrot.org | |||
|
15:43
cogno joined,
whiteknight left
15:44
marcel_r joined
|
|||
| rohit_nsit08 | lucian: ok now jison is in the path and error has changed | 15:44 | |
| [droid@localhost cafe]$ make | |||
| jison lib/js/grammar.jiy lib/js/lexer.jil | |||
| /home/droid/local/node/bin/jison: line 1: syntax error near unexpected token `(' | |||
| /home/droid/local/node/bin/jison: line 1: `var JISON = require('../jison'),' | |||
| make: *** [build-js] Error 2 | |||
| what is this ../jison doing here? | 15:45 | ||
|
15:47
ambs joined
15:55
whiteknight joined
|
|||
| cotto | ~~ | 15:59 | |
|
16:00
cogno left
|
|||
| whiteknight | hello cotto | 16:01 | |
|
16:04
lucian left
|
|||
| dalek | rrot/m0-spec: e92d06d | cotto++ | docs/pdds/draft/pdd32_m0.pod: break Contexts into its own section, update bytecode description |
16:15 | |
|
16:26
marcel_r_ joined
16:28
sigue left
16:31
marcel_r left,
marcel_r_ is now known as marcel_r
16:38
rohit_nsit08 left
|
|||
| dalek | TT #2058 created by rytulhgpuurfxu2++: Argan oil or Moroccan oil Functions Miracles with regard to Pores and skin | 16:38 | |
| TT #2058: trac.parrot.org/parrot/ticket/2058 | |||
|
16:43
dodathome joined
16:47
rohit_nsit08 joined
|
|||
| cotto_work | ~~ | 16:47 | |
| rohit_nsit08 | whiteknight: hi , narwhal and jison are now working perfectly ( i tested jison and it is working) | 16:48 | |
| and while making cafe , now error came a step further | |||
| whiteknight: this time there is a problem with nodejs command | 16:49 | ||
| whiteknight : has it anything to do with node.js | |||
| ? | |||
| whiteknight | i have no idea | 16:54 | |
| node.js may alias itself to "js", which I think narwhal does too | |||
| I only played with cafe and jison once, a few months ago. I didn't do much with it | 16:58 | ||
| so I'm not going to be huge help in getting it up and running | |||
| at least, not until I look at it again | |||
| rohit_nsit08 | whiteknight: i think i can make it run after some hacks here and there , just to revise myself , what to be done after cafe runs | 17:02 | |
| whiteknight: i learnt so much today, that i had in whole week :-D | |||
| whiteknight | yeah, we're all about the learning | ||
| moritz | welcome to #parrot :-) | 17:03 | |
| rohit_nsit08 | thanks everyone | ||
| whiteknight | rohit_nsit08: no problem. We're in this chatroom all day every day, and we like to answer questions | ||
| rohit_nsit08 | whiteknight: thanks a lot buddy, hope we'll on track soon , (p.s. i'm not going to leave u , we have to make a compiler :-) | 17:05 | |
|
17:09
ShaneC left
|
|||
| rohit_nsit08 | whiteknight: how can i test a parser generated from jison command? | 17:16 | |
| whiteknight | rohit_nsit08: I have no idea how you test it. Like I said, I didn't use it much | 17:26 | |
| you may have to ask zaach, the guy who created it | |||
| I distinctly remember that there is a huge lack of documentation | 17:27 | ||
| rohit_nsit08 | whiteknight: i have emailed him my all doubts and waiting for his reply :-) | ||
| whiteknight | I sent him a message a while back, and he replied pretty quickly. Seems like a good guy | ||
| hopefully we don't have to bother him too much :) | |||
| rohit_nsit08 | btw do u remember any node program to test it i saw it in this link github.com/zaach/jison/blob/master/README.md have a look pls | 17:28 | |
| whiteknight | Node == node.js | ||
| zaach.github.com/jison/docs/ | 17:29 | ||
| rohit_nsit08 | ohh i'm already using narwhal and now we have to use node.js also , :-) , | 17:30 | |
| whiteknight | fun | ||
| rohit_nsit08 | whiteknight: wait , i think the same can be done with js command | 17:31 | |
| whiteknight | zaach.github.com/jison/try/ | ||
| rohit_nsit08 | narwhal has the same feature i guess | ||
| whiteknight | rohit_nsit08: we're both learning more today than we have all week :) | ||
| rohit_nsit08 | :-D | ||
| whiteknight | I wonder what the project timeline is going to look like? "Getting Jison/cafe to work: 2 months. Everything else: 1 month" | 17:33 | |
| :) | |||
| rohit_nsit08 | whiteknight: it worked | 17:34 | |
| whiteknight | really? Awesome. That changes the timeline considerably | ||
| rohit_nsit08 | narwhal command is equivalent to node | ||
| whiteknight | okay, that's what I thought | 17:35 | |
| rohit_nsit08 | so now we can generate the parser from jison and parse input using narwhal and cafe has a slight problem with nodejs command so i'll be replacing that with narwhal and hope it works | ||
| whiteknight | okay, so you have that compiler, you need to set up a backend to output PIR code | 17:36 | |
| (or winxed, or NQP, or whatever) | |||
| rohit_nsit08 | yup , btw tell me if i'm wrong , i have to write a code generator ? is it | 17:39 | |
| whiteknight | at the most basic level, yes. | 17:40 | |
| rohit_nsit08 | what i understand from compiler is that we give it a file and it will have a lexer and parser as the front end | ||
| whiteknight | We want a translator, JS -> PIR | ||
| rohit_nsit08 | we'll generate the parser from jison | ||
| and than after generating the parse tree we will use code generator to get the pir code | |||
| whiteknight | right, compiler is three parts basically: The Parser, the IR, and the code generator | 17:41 | |
| rohit_nsit08 | where does we used BNF forms? | ||
| what's IR? | |||
| whiteknight | BNF wouldn't be used directly. BNF is used to construct the grammar and the parser | ||
| IR is the intermediate representation. that's typicall the parse tree (Also "Syntax tree", "Abstract syntax tree", "AST", etc) | |||
| the parser uses a grammar to turn the code into a parse tree. The code generator takes the parse tree and outputs PIR | 17:42 | ||
| PAST is a parse tree type used by Parrot with lots of functionality | |||
| rohit_nsit08 | so my code will need to understand that parse tree and generate PIR code | ||
| whiteknight | if you modify cafe to use PAST instead of it's current system, you can use the PAST code generators instead | ||
| which is awesome, because there are variants of PAST that can output C, LLVM ASM, etc | 17:43 | ||
| rohit_nsit08 | i read a little about PAST , what exactly is it used for , code generation from parse tree | ||
| ? | |||
| whiteknight | PAST is the parse tree | ||
| Take a look at this file: github.com/zaach/cafe/blob/master/...codegen.js | |||
| that's the cafe code generator. It outputs javascript | 17:44 | ||
| you need to change that to output PIR | |||
| again, that's the most basic | |||
|
17:45
ShaneC joined
|
|||
| PerlJam | Are there any good tutorials on PAST to help people like rohit_nsit08 get started? | 17:49 | |
| Or just the Squaak tut.? | |||
| whiteknight | squaak doesn't really cover PAST at all | ||
| PerlJam | exactly :) | ||
| whiteknight | except to say it exists, some handwaving, and then we have a compiler | ||
| PerlJam | If we want more people to use parrot, we could lower the barrier to entry by providing some good tutorials on how things fit together and how to use the major components. | 17:52 | |
| Mabye that could make for a GSoC project even? | |||
| (or several) | |||
| rohit_nsit08 | whiteknight: i read the codegen.js code , so it's converting the parse tree into javascript code? | 17:55 | |
| whiteknight | exactly. The compiler loops over all nodes in the parse tree, and calls codegen.js on each to generate the JS for that node | ||
| Take a look at the "ForStmt" part there | 17:56 | ||
| for (var i = 0; i < 5; i++) { ... } | |||
| in the parse three, that's ForStmt (Child0, child1, child2) { child4 } | 17:57 | ||
|
17:57
theory joined
|
|||
| whiteknight | so to produce that code, we have to get the code for all the child nodes first, then put them together into the for loop | 17:58 | |
| rohit_nsit08 | whiteknight: what is toJS functions doing here? | 18:01 | |
| whiteknight | Every node has a .toJS() method, which converts that node to javascript code | ||
| in your compiler, that will be changed to .toPIR() | |||
| or .toParrot() | |||
| that method recursively calls another rule for that node | 18:02 | ||
| rohit_nsit08 | whiteknight: and lvl is refrencing to tree's level? | ||
| whiteknight | I think that's the indentation level of the generated code | ||
| to make it pretty | |||
| rohit_nsit08 | ohh, got it , lest all the code will end up in one line | 18:03 | |
| whiteknight | node types are defined here: github.com/zaach/cafe/blob/master/...s/nodes.js | ||
| right | |||
| in the nodes.js file, it defines a node type ForStmt. When you call .toJS() method on that node, it calls the ForStmt rule in codegen.js | 18:04 | ||
| it's actually a pretty simple design, if you figure out what's going on | |||
|
18:05
ambs left
|
|||
| rohit_nsit08 | ya it's defining all the node types in node.js file | 18:05 | |
| moritz | the simplest OO compiler design you can think of :-) | ||
| whiteknight | moritz: exactly, so it's a pretty good place to start building a new compiler from | 18:06 | |
|
18:06
ambs joined
|
|||
| whiteknight | 1) build a PIR code generator. 2) Bootstrap, so you have a stage1 JS compiler running on top of Parrot. 3) Update the stage1 compiler to generate PAST instead of the existing AST | 18:07 | |
| once your compiler generates PAST, you get all the benefits: optimizations, analysis tools, alternate backends, etc | |||
| moritz | don't forget to insert "test, test, test" after each step | ||
| whiteknight | right, steps 1a, 2a, and 3a | 18:08 | |
| NotFound | Testing is for cowards, ship it! | ||
| whiteknight | At that point, it's a matter of some of the details: set up a JS compiler object so we can call JS code from Rakudo and Cardinal and Winxed | ||
| or, set up a language loader so you can do the opposite (call Rakudo from JS) | |||
| a library loader to pull in .pbc libraries, and an NCI interface for easily using native libraries | 18:09 | ||
| oh, and a working object model | |||
| all easy stuff, though there's a lot of it | |||
| rohit_nsit08 | whiteknight: what is rakudo and cardinal? | ||
| whiteknight | Rakudo is the Perl6 compiler project. Cardinal is the Ruby compiler project | ||
| we also have Partcl (Tcl compiler), Pynie (the Python compiler project, which is probably also going to be in GSoC this year) | 18:10 | ||
| and then we have Winxed, a low-level language that's similar to JS but lower | |||
| and NQP, which is a low-level subset of Perl6 | |||
| rohit_nsit08 | whiteknight: i think i should stick to javascript compiler for the time being :-) | ||
| whiteknight | rohit_nsit08: Right, but once it works, we're going to want to make it work with other compilers too | 18:11 | |
| WORLD DOMINATION | |||
| PerlJam wonders who's Pinky to whiteknight's Brain | |||
| whiteknight | "Are you thinking what I'm thinking, Pinky?" "I think so Brain, but where are we going to find rubber pants our size?" | 18:12 | |
| rohit_nsit08 | whiteknight: ya that's important , btw i don't have experience of writing test suits can i get any help from somewhere about writing tests ? | ||
| whiteknight | rohit_nsit08: of course! We write lots of test suites and are very good at it | ||
| rohit: I'll get you set up with Rosella, a project of mine which helps with testing. That will make everything easy | 18:13 | ||
| rohit_nsit08 | whiteknight: than i will assume i won't be having problem with tests | ||
| whiteknight : ya pls | |||
| PerlJam | rohit_nsit08: if you do have problems, there will be lots of helpful people here :) | ||
| whiteknight | rohit_nsit08: With tests, the best thing to do is write tests as you go. Write one feature, test it. Write another feature, test it | ||
| rohit_nsit08 | whiteknight: i need some experience in testing | ||
| whiteknight | then, when you have all your features, you have all your tests | 18:14 | |
|
18:15
ambs left,
ambs joined
|
|||
| rohit_nsit08 | whiteknight: i like this irc , people don't sleep :-) | 18:15 | |
| whiteknight | rohit_nsit08: I don't think anybody teaches testing in school. Everybody learns it when they go out in the "real" world | 18:16 | |
| rohit_nsit08 | whiteknight: hmm.. that's true and this will be my first time :-) with testing atleast | ||
| whiteknight | rohit_nsit08: it's not a big deal. Testing is easy. | 18:17 | |
| rohit_nsit08: Maybe I'll put together a tutorial or a blog post or something about how to do testing. That way it will help all the GSOC students at once | 18:18 | ||
| marcel_r is looking forward for this tutorial/blog post/something about testing. | 18:21 | ||
| whiteknight | :) I'll start writing it today | ||
| marcel_r | whiteknight: Thanks :) | 18:23 | |
| rohit_nsit08 | whiteknight: ya that will do the best job , i myself will write everything i learnt today , next time it won't take anyone to get to this stage , | 18:24 | |
| dalek | nxed: r873 | NotFound++ | trunk/winxedst1.winxed: fix amazingly stupid mistake in constant string optimization |
18:28 | |
| nxed: r874 | NotFound++ | trunk/winxedst1.winxed: instanceof second operand can be now any class specifier |
|||
| PerlJam has tries a couple of times to teach an elective course on software craftsmanship that includes testing at the local U, but they keep saying they cover these topics (when I know they don't) | 18:29 | ||
| s/tries/tried/ | |||
| NotFound | PerlJam: you should probably avoid the term "craftmanship" and call it somehing like "enterprise oriented advanced programming disciplines" | 18:32 | |
| whiteknight | "...with widgets" | ||
| NotFound | s/programming/software engineering | 18:33 | |
| dalek | nxed: r875 | NotFound++ | trunk/pir/winxed_compiler.pir: update installable files |
||
| NotFound | Where I work we send faxes to people that have email accounts and they call it "Modernization and Innovation" | 18:35 | |
| PerlJam | either way ... They keep saying that the cover testing, revision control systems, code review, etc. in other classes so no matter what I call it, they won't go for it. | 18:36 | |
| (Every single student I've hired has known absolutely *nothing* about these concepts) | |||
| NotFound | PerlJam: I know a local university that had a course called Metodology when they teached Cobol. | 18:37 | |
| PerlJam | NotFound: do you live near me and I just don't know it? (Sounds exactly like the local U here) | ||
| NotFound | PerlJam: I don't think so. | ||
| It is the University of La CoruƱa | 18:38 | ||
| And probably several other Spain's universities. | |||
| Don't know if they still do, I don't ask no more to avoid depressing thoughts. | 18:39 | ||
| cotto_work | despammed | 18:40 | |
| plobsing | NotFound: in winxed, "a instanceof A" is valid, but "a instanceof A.B" isn't. thoughts? | 18:41 | |
| NotFound | plobsing: should be valid after r875 | ||
| plobsing | hmmm... I haven't updated in a while. I'll try that. | 18:42 | |
| NotFound | plobsing: less than a half hour ago. | ||
| rohit_nsit08 | whiteknight: bye i should sleep now , it was a nice experience today :-) hoping for learning more in future also , thanks (and i really love this irc ,thanks everyone ) | 18:44 | |
|
18:47
Payne joined
|
|||
| whiteknight | rohit_nsit08: goodnight. See you again soon | 18:48 | |
| rohit_nsit08 | whiteknight: good night :-) | 18:49 | |
|
18:54
rohit_nsit08 left
19:02
Payne left
19:05
marcel_r left
|
|||
| cotto_work | despammed | 19:14 | |
| Tickets 2049 through 2061 were spam. Suggestions? | 19:16 | ||
| moritz | IP blacklisting? signup captchas? | 19:19 | |
| plobsing | I checked out a discussion on the trac project's mailing list regarding this issue. They identified a couple solutions including nofollowing links and captchas but disliked them all. | ||
| cotto_work | We already require email confirmation for new users. | 19:20 | |
| plobsing | what free email system are the spammers using? hotmail? | ||
| cotto_work | I'm tempted to suggest manual-only verification, but I hate that. | ||
| NotFound | Do they like more receiving the spam? | ||
| plobsing | we could set up a grey-list of bot-probably email providers and require captchas from those users only (with a message informing them why) | 19:22 | |
| cotto_work | plobsing: yahyoo | 19:23 | |
| *yahoo | |||
| plobsing | what fraction of our legit users use yahoo? | ||
| cotto_work | looks like several do | 19:24 | |
| cotto_work noms | 19:25 | ||
| atrodo | so why are captcha's no good? | 19:27 | |
| plobsing | (1) good bots get through. it just costs spammers a little more for their spam software, and many spammers already have this these days. | ||
| (2) not terribly good accessibility wise. contrary to popular beleif, blind people use computers too | 19:28 | ||
| (3) they are getting harder for humans to answer correctly (due to the captcha-bot arms race) | |||
| (4) any additional impedance between users and submitting bug reports is bad | 19:29 | ||
| atrodo | I would guess anything thing that lowers impedance between users and bug reports also lowers impedance for bots | 19:30 | |
| plobsing | unfortunately, this is true | 19:31 | |
| which is why I'd like to use heuristics on data such as email provider to enforce this impedance only when it is likely that the report is spam | 19:34 | ||
| Coke | we need a trac plugin that makes everything a new user does pending until approved by an admin. | 19:35 | |
| plobsing | I suspect a bayesian filter with data such as email, post content, number and frequency of previous reports could get quite good at identifying bots. | ||
| Coke | if it's a real bug, boom, all is ok. if not, nothing happens. doesn't get in real users way at all. | 19:36 | |
| plobsing | how is that better than what we're doing now? now, we only need admin action on spam (delete). under the proposed system, we'd need admin action on legit (approve) and spam (delete, to avoid filling the pending queue) | 19:38 | |
| Coke | it's better in that only the admins have to do work. | 19:40 | |
| also, it would only be for new accounts. | |||
| any already-approved users get a free pass. | |||
| moritz | maybe we should just send the first post to akismet (a public blog spam filtering service) | 19:41 | |
| Coke | (and no spam would hit the mailing list) | ||
| (the first post) that's fine. if we can automate it instead of making an admin do it, great. | 19:42 | ||
| mikehh | are the bots using parrotbug or just mailing? | ||
| Coke | parrotbug does nothing. | 19:43 | |
| unless someone fixed it. | |||
| plobsing | parrotbug is broken? somebody submit a parrotbugbug! | 19:44 | |
|
19:48
theory left
|
|||
| lucian_ | akismet would be cool | 19:51 | |
|
19:51
lucian_ is now known as lucian
|
|||
| lucian | i've found it quite good | 19:51 | |
| whiteknight: are there any docs on PAST? | 19:55 | ||
| whiteknight | I suspect the only PAST documentation is the POD in the source files themselves | ||
| lucian | i'm specifically interested in using it from outside parrot (from a file is ok) | ||
| i see | |||
| PerlJam | What about pdd26 ? | 19:56 | |
| whiteknight | we could really use some serious documentation on the subject, especiall if it's supposed to be a central part of our compiler infrastructure | ||
| I don't know much about PDD26. By it's nature it *should* be more about design and less general user documentation | |||
| I wouldn't be surprised if that wasn't the case | |||
| PerlJam | aye. But pdd26 + the POD in the files is what I used in the past and it was quite workable. | ||
| Though I haven't looked in ages. | 19:57 | ||
| lucian | hmm, it doesn't seem to have a textual representation | 19:58 | |
| PerlJam | lucian: it does if you dump the data structures :) | 19:59 | |
| lucian | you mean load. my frontend is python | ||
| then i guess i'm better off with pir/winxed | |||
| PerlJam | lucian: you mean instead of python? | 20:02 | |
| lucian | no, i mean to generate | 20:03 | |
| PerlJam | oh, I see. | ||
| lucian | the parser is python, i need to generate something to run on parrot | ||
| PAST could possibly be easier to do | |||
| but since it has no text format, it's not an option | |||
| PerlJam | or ... you could make a text format based on the existing docs and make the next guy happy :) | 20:04 | |
| cotto_work | M0 question: will add and multiply be enough? | 20:12 | |
| Lua has add, sub, mul, div, mod and negate (though subtract is just a special case of add) | 20:14 | ||
|
20:17
ambs left
|
|||
| cotto_work | as is negate | 20:17 | |
|
20:20
mj41 joined
|
|||
| whiteknight | and at the transistor level, multiply is just a weird combination of looping, adding, shifting, and looking up partial results in a lookup table | 20:24 | |
|
20:29
whiteknight left
|
|||
| PerlJam | you really only need a couple of different logic gates and you can build all of the others from there :) | 20:29 | |
|
20:30
plobsing left
|
|||
| atrodo | cotto_work> I struggled with that question as well. I finally decided that complicating doing simple math operators is not worth adding the extra 2 opcodes | 20:31 | |
| cotto_work | atrodo: that's the direction I'm leaning in | ||
| having explicit basic math ops doesn't seem like a convenience as much as sanity | 20:32 | ||
| lucian | since most hardware implements multiplication, i'd expect that to exist | ||
|
20:33
plobsing joined
|
|||
| cotto_work | Actually, either negation or subtraction will probably be necessary. | 20:33 | |
| atrodo | leaving out sub means (thinking off hand) that you'd have to load -1 into a register, mul the second operand, then add | 20:34 | |
| or have a bitwise xor | |||
|
20:36
Hackbinary joined
|
|||
| lucian | why *not* add more ops? especially math ops | 20:36 | |
| plobsing | we can implement everyting in terms of nand! | ||
|
20:41
ambs joined
|
|||
| lucian | i'd expect M0 to have enough ops to efficiently translate to common hardware | 20:41 | |
| cotto_work | It's interesting that the Lua VM doesn't have any ops for bitwise manipulation. | 20:43 | |
| lucian: modern hardware can do a lot of things | 20:44 | ||
| lucian | cotto_work: yeah, i know | ||
| i don't know if the jit could figure out to use the native mul when M0 emulates it | 20:45 | ||
| cotto_work | Ah. Lua doesn't support bitwise ops as a language feature. | 20:46 | |
| lucian | really? that's odd | ||
| well, it doesn't even have ints | |||
| cotto_work | If M0 wants to pretend it's C, bitwise ops are kinda important. | ||
| lucian shouldn't be surprised | |||
| cotto_work | lucian: I didn't know that. | 20:47 | |
| lucian | what do RISC assemblies look like? (arm, llvm, mips). i'd expect M0 to mirror them | ||
| cotto_work: yeah, all numbers are doubles | |||
| NotFound | Did we use bitwise ops in ops or pmc for any other thing than implementing bitwise ops? | 20:49 | |
| cotto_work | NotFound: flags | ||
| at the C level | 20:50 | ||
| NotFound | Good point | 20:51 | |
| atrodo | plus, you're pretty much saying that you can't natively support any language that has bitwise ops | 20:53 | |
| cotto_work | arm has AND, EOR (xor?), ORR (or) and BIC (AND NOT) | 20:55 | |
|
21:03
PerlJam left,
tadzik left
21:05
pmichaud left
21:08
Util left
|
|||
| cotto_work | also, logical shift L/R, rotate L/R and arithmetic shift right | 21:09 | |
| lucian | right. llvm has a bunch of those as well | 21:11 | |
| it would make sense to me to support at least a large subset | |||
| cotto_work | llvm.org/docs/LangRef.html#bitwiseops | 21:12 | |
| that doesn't look like that many | |||
| shl, logical shr, arithmetic shr, and, or, xor | 21:13 | ||
| lucian sheepishly suggests renaming M0 to LLVM IR | 21:16 | ||
| and mul too llvm.org/docs/LangRef.html#binaryops | |||
| cotto_work | being able to use LLVM is a good goal, but we don't want to be married to it as the only option | 21:18 | |
| lucian | i know, but wouldn't it be a good first version? | 21:19 | |
| M0.01 = LLVM IR | |||
| them M1, the C-like parrot system language can be written | |||
| plobsing | LLVM IR is quite complicated to implement for anything that isn't named LLVM | ||
| lucian | designed in the first place | 21:20 | |
| M1 can be a winxed fork, close revived or w/e | |||
| then when M1 is stable, M0.02 can be a subset of llvm ops | |||
| M0.03 can become more llvm-neutral | 21:21 | ||
| lucian is just rambling | |||
| cotto_work | is there anything cmp can do that sub can't? | 21:23 | |
| both don't seem necessary | |||
| lucian: starting assumptions are important. I feel like if we start from llvm's ops and cut away what's unnecessary we'll end up with a product less well-suited to Parrot's needs than if we figure out what those needs are and design around them in the first place. | 21:27 | ||
| lucian | cotto_work: but can we? i don't think it's possible without the M1 non-assembly language already designed and working | ||
| cotto_work | lucian: "PIR" is another spelling for "M1" | 21:28 | |
| lucian | then nothing has been achieved | 21:29 | |
| sure, for backwards compatibility | |||
| cotto_work | as is the charming mix of C and magic that implements our PIR ops and PMCs | 21:30 | |
|
21:30
dodathome left
|
|||
| lucian | sure, but do you want to keep that? | 21:31 | |
| cotto_work | of course not. We just want equivalent power. | ||
| lucian | then why not focus on designing an equivalently powerful but nicer parrot system language? | 21:32 | |
| cotto_work | sorry for being unclear | ||
| lucian | and then design M0 to fit PIR and opsc for backwards compat, and the new system language? | ||
| cotto_work | We will need to figure out which M0 overlay language will be the recommended one for parrot guts development. | 21:35 | |
|
21:36
mj41 left
|
|||
| lucian | sure, we agree on that | 21:36 | |
| but my opinion is that should be done before M0 | 21:37 | ||
| i think it's best to first and foremost design for the preferred interaction method | |||
|
21:38
bbatha joined,
soh_cah_toa joined
|
|||
| lucian | otherwise, follow the design of proven assemblies more carefully | 21:40 | |
| s/carefully/closely/ | |||
| cotto_work | The current interaction methods are C and PIR. If M0 can do what those can do, it's complete. | 21:42 | |
| dalek | TT #2062 created by dkkfqnoviohwgg8++: An Overview of Anonymous VPN service | 21:52 | |
| TT #2062: trac.parrot.org/parrot/ticket/2062 | |||
| cotto_work | deleted | 21:53 | |
| lucian | cotto_work: it guarantees that current methods will work reasonably well. but i don't think it guarantees new features will in any way be easy/efficient to implement (i.e. jit) | 22:00 | |
|
22:00
bbatha left
22:01
bbatha joined
|
|||
| lucian | again, i'm likely rambling | 22:03 | |
| cotto_work | With the math and bitwise ops, we're up to 34 (30 permanent) | 22:07 | |
| dalek | rrot/m0-spec: 04dfca2 | cotto++ | docs/pdds/draft/pdd32_m0.pod: fill out math and bitwise ops |
22:09 | |
| lucian | cotto_work: that seems like a few more could be added if necessary | 22:15 | |
| cotto_work | lucian: what do you mean? | 22:18 | |
| lucian | cotto_work: i mean 34 is very few. if some more need to be added for, say, efficiency, it's not a big deal | ||
| cotto_work | lucian: I'm thinking it's too many. | 22:21 | |
| from the pdd: M0's simplicity should be extreme; the moment M0 gets ops for the sake of efficiency or ease of use, it has failed its design goals. | |||
| lucian | too many for what? | ||
| cotto_work | not the minimum we can get away with | 22:22 | |
| lucian | i disagree with the second part of that, i guess | ||
| ease of use should be irrelevant | |||
| but efficiency, not so much | |||
| for example, how about SIMD? | |||
|
22:27
plobsing left
22:29
fperrad left,
ambs left
22:40
particle left
22:45
whiteknight joined
22:50
kid51 joined
23:01
luben joined
|
|||
| luben | cotto, regarding M0 ops, I do not see flow control ops in the list. How do we express if/then/else constructs in M0? | 23:03 | |
| cotto_work | goto | 23:04 | |
| ah | |||
| luben | it is not in ppd | ||
| cotto_work | we don't seem to have that (or a conditional version) | ||
| luben | pdd | ||
| yes | 23:05 | ||
| cotto_work | actually, that'll be done by poking the pc | ||
| luben | how we poke conditionaly to pc? | ||
| we do not have cmp | |||
|
23:07
rurban_ joined,
cosimo joined
|
|||
| luben | I think it will be much more sane to include some limited set of control flow ops, at least conditional jmp and jmp | 23:09 | |
| Tene | luben: I recommend you go look at the current flow control op implementations, to see what's currently used. | 23:10 | |
|
23:10
rurban left,
rurban_ is now known as rurban
|
|||
| cotto_work | luben: I'll add an example tonight when my brain is less zombie-like. | 23:11 | |
| luben | Tene, control flow in parrot ops or in M0 ops? | ||
| cotto, OK | |||
|
23:11
plobsing joined
|
|||
| lucian | again, since all platforms have jumps and conditional jumps, why not do that? | 23:12 | |
| luben | also, just a thougth: we load two M0 objects - how we call from one to the other? | ||
| Tene | luben: look at the current parrot ops for inspiration about what the M0 ops would look like. | 23:13 | |
| was my suggestion. | |||
| luben | if we do not have functions/subs (as I see it now) we will have a really hard time to write JIT for it | ||
| lucian | i don't think a jit could figure out that pc changes mean jumps | ||
| luben | Tene, OK, I know the parrot ops. I'm just concerned that they miss from M0 pdd | 23:14 | |
| lucian, yes | 23:15 | ||
| lucian | in general, i'm skeptical towards M0's goal to be radically minimal | 23:16 | |
| cotto_work | lucian: I'm glad you're skeptical. We haven't reached the point yet where we have too many perspectives. | 23:17 | |
| luben | I do not think that some reduced ISA will be more optimizable than the extended ISA which is PIR now | ||
| cotto_work | I suspect that our limiting factor for GSoC this year will be mentors. I can't believe how many students we're seeing. | 23:18 | |
| </ot> | |||
| luben | in the reduced ISA we have lost a ton of semantic info that could help the optimizer | ||
| optimizer : i mean the JIT backend | 23:19 | ||
| lucian | luben: PIR is a gigantic ISA, perhaps bigger than x86 (haven't checked) | ||
|
23:20
kid51 is now known as kid51_at_dinner
|
|||
| lucian | but i do believe M0 should be at least as high level as llvm, perhaps even as high as jvm bytecode | 23:20 | |
|
23:20
particle joined
|
|||
| luben | lucian, agree | 23:22 | |
| lucian | that would certainly require more ops, i don't know how many | ||
| i do agree however that there should be less than 100 | 23:23 | ||
| as a ballpark number | |||
|
23:24
bbatha left
|
|||
| plobsing | chromatic++ pointed out a lot of Dis VM papers in the lead up to Lorito. | 23:25 | |
|
23:27
Eduardow left
|
|||
| lucian | skimming a paper, they seem to have quite a few more ops | 23:27 | |
| is it a proven design, in the field? i don't know | |||
|
23:28
dmalcolm left,
pjcj left,
bbatha joined
|
|||
| lucian | does anyone actually use inferno, btw? | 23:29 | |
| luben | at least Dis VM have control flow ops and functions | ||
| plobsing | lucian: not sure. I recall them mentioning the specific use case of set-top-boxes, but I'm not sure if they're in production. | 23:30 | |
| lucian | plobsing: right. so nothing significant that i've missed | 23:31 | |
|
23:32
tewk left
|
|||
| plobsing | lucian: if everybody used "proven designs" we'd still be using cobol | 23:34 | |
| lucian | plobsing: that's not the only requirement in my eyes | 23:35 | |
|
23:35
bbatha left
|
|||
| luben | also, if we want to rewrite parrot on M0 we must have means to define some kind of functions in M0 - either C calling convention ot PCC | 23:35 | |
| lucian | but i do think a very minimalist design needs to provide very good reasons for existing | 23:36 | |
|
23:40
benabik joined
23:42
pjcj joined
23:43
bbatha joined
23:53
theory joined
23:54
kid51_at_dinner is now known as kid51
|
|||
| kid51 | bbatha ping | 23:58 | |