Camelia, the Perl 6 bug

IRC log for #parrot, 2011-03-24

Parrot | source cross referenced

| Channels | #parrot index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
00:05 bacek left #parrot
00:06 dmalcolm left #parrot
00:12 nwellnhof joined #parrot
00:12 contingencyplan left #parrot
00:14 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 contingencyplan joined #parrot
00:19 bbatha joined #parrot
00:32 bbatha left #parrot
00:32 bubaflub joined #parrot
00:40 kid51 joined #parrot
00:44 kid51_at_dinner left #parrot
00:53 theory joined #parrot
01:00 nwellnhof left #parrot
01:03 woosley joined #parrot
01:11 soh_cah_toa whiteknight: i got a question about the gsoc debugger
01:13 dalek parrot/m0-spec: 38207e6 | cotto++ | docs/pdds/draft/pdd32_m0.pod:
01:13 dalek parrot/m0-spec: clean up ffi examples and docs, avoid Excessive Capitalization
01:13 dalek parrot/m0-spec: review: https://github.com/parrot/parrot/commit/38207e6821
01:14 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?
01:15 cotto_work It depends on what looks like the best option based on the state of the existing debugger code.
01:16 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:17 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:18 soh_cah_toa test? you mean like the t directory?
01:19 cotto_work t/tools/parrot_debugger.t
01:20 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:22 cotto_work soh_cah_toa: the tests may be valuable even if you decide to start from scratch
01:22 cotto_work My inclination would be to build on what's there, but I don't know the state of the code.
01:22 soh_cah_toa okay
01:22 cotto_work If you want to get your hands dirty, add a feature to it and see how hard it is.
01:23 soh_cah_toa alright
01:23 cotto_work optional, but highly recommended
01:23 wknight8111 soh_cah_toa: you have to pick what project you want to do
01:23 wknight8111 soh_cah_toa: there are lots of options. you can choose to rewrite the old debugger or write a new one
01:24 wknight8111 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
01:24 cotto_work Yes.  The suggestions on the wiki are only suggestions.
01:24 wknight8111 other devs may have other preferences too
01:25 plobsing I'd really like the debugger be able to use arbitrary HLLs that expose a REPL API.
01:26 plobsing bonus points if it is smart enough to default to the HLL I'm currently in
01:27 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?
01:27 * cotto_work goes home
01:29 mikehh soh_cah_toa:  he commited a lot of stuff and was doing quite a bit of work, then vanished, probably $work problems
01:30 soh_cah_toa where could i find it?
01:30 wknight8111 mikehh: which dev was reworking the debugger?
01:32 dalek parrot/m0-spec: 53bb8c1 | util++ | docs/pdds/draft/pdd32_m0.pod:
01:32 dalek parrot/m0-spec: Fix typo in pdd32_m0.pod
01:32 dalek parrot/m0-spec: review: https://github.com/parrot/parrot/commit/53bb8c1d09
01:36 dalek parrot/m0-spec: 0e5d61a | util++ | docs/pdds/draft/pdd32_m0.pod:
01:36 dalek parrot/m0-spec: Fix typo in pdd32_m0.pod, again
01:36 dalek parrot/m0-spec: review: https://github.com/parrot/parrot/commit/0e5d61a2af
01:38 mikehh wknight8111: Paul_The_Greek I think it was about six months ago
01:40 wknight8111 left #parrot
01:40 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:43 Util soh_cah_toa: git show 2976f129
01:44 soh_cah_toa thanks
01:47 plobsing left #parrot
01:48 soh_cah_toa plobsing mentioned a repl but don't you already have that with the eval command?
01:52 Eduardow left #parrot
01:52 dalek parrot/opsc_llvm: 1594ff8 | jkeenan++ | / (2 files):
01:52 dalek parrot/opsc_llvm: Use 'llvm-config' to simplify probe for LLVM; adjust tests accordingly.
01:52 dalek parrot/opsc_llvm: review: https://github.com/parrot/parrot/commit/1594ff87f5
01:55 Eduardow2 joined #parrot
01:57 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 soh_cah_toa it's driving me crazy :)
02:01 cotto joined #parrot
02:04 kid51 soh_cah_toa: Which source code file are you referring to?
02:05 soh_cah_toa frontend/parrot_debugger/main.c
02:05 cotto ~~
02:06 cosimo joined #parrot
02:09 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 :-)
02:09 kid51 Whether the POD is correct is another matter.
02:09 soh_cah_toa i meant besides pod. comments on the code
02:10 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 kid51 We have codingstd tests to measure the POD, but you can't really test for inline comments.
02:13 cotto soh_cah_toa, rlwrap
02:14 soh_cah_toa rlwrap is just a command though, right? it doesn't have an api or anything
02:15 soh_cah_toa or does it? i'm not sure
02:16 cotto I doubt it does.  I'm just saying that readline integration is less important when rlwrap can do most of the job
02:17 soh_cah_toa oh yeah. that defintely would be towards the bottom of the "to-do list". just something i quick thought of
02:21 kid51 left #parrot
02:30 plobsing joined #parrot
02:35 soh_cah_toa left #parrot
02:44 bubaflub left #parrot
02:45 cognominal left #parrot
03:22 jsut joined #parrot
03:27 jsut_ left #parrot
03:40 Eduardow2 left #parrot
04:10 theory left #parrot
04:21 theory joined #parrot
04:24 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?
05:03 particle1 is now known as particle
05:19 cotto dukeleto, ping
05:19 dukeleto cotto: pong
05:19 cotto dukeleto, I'm wondering if it makes sense to pass the context around as an explicit argument
05:19 cotto If everything's indexed off it, that makes for a bit of a bootstrapping problem
05:21 cotto (referring to M0 ops)
05:21 dukeleto cotto: what is the bootstrapping issue?
05:23 cotto we need the context to know how to access the context
05:24 cotto actually, I may be thinking about this wrong
05:24 sorear that's what I said earlier
05:24 cotto We don't necessarily need to have the context in bytecode.
05:24 cotto sorear, that's why I've been thinking about it
05:25 cotto sorear++
05:28 cotto 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
05:32 sorear Do we expect to be generating M0-code in normal use of Parrot?
05:32 sorear e.g. will "eval" create new M0-bytecodes?
05:32 cotto sorear, define "normal use"
05:32 sorear cotto: "not opsc"
05:33 cotto as in build, hll build, hll use, etc
05:33 sorear hll use
05:34 cotto I'd expect hll code to get compiled down to m0
05:38 dukeleto "hilarity and segfaults are likely"...
05:38 cotto I'll be here all week.
05:48 ShaneC left #parrot
05:49 theory left #parrot
05:49 estrabd left #parrot
05:51 bacek joined #parrot
06:00 ShaneC joined #parrot
06:08 mtk left #parrot
06:14 * cotto sleeps
06:14 mtk joined #parrot
06:15 bacek left #parrot
07:06 rurban_ joined #parrot
07:09 rurban left #parrot
07:09 rurban_ is now known as rurban
07:22 fperrad joined #parrot
07:33 cognominal joined #parrot
07:51 contingencyplan left #parrot
07:51 ShaneC left #parrot
07:52 ShaneC joined #parrot
08:05 dalek parrot/m0-spec: 3ffacfb | dukeleto++ | docs/pdds/draft/pdd32_m0.pod:
08:05 dalek parrot/m0-spec: Improve abstract
08:05 dalek parrot/m0-spec: review: https://github.com/parrot/parrot/commit/3ffacfb052
08:38 dalek parrot/m0-spec: 07b99a7 | dukeleto++ | docs/pdds/draft/pdd32_m0.pod:
08:38 dalek parrot/m0-spec: Improve some definitions
08:38 dalek parrot/m0-spec: review: https://github.com/parrot/parrot/commit/07b99a77bb
08:42 mj41 joined #parrot
09:20 dalek parrot/m0-spec: 84426ea | dukeleto++ | docs/pdds/draft/pdd32_m0.pod:
09:20 dalek parrot/m0-spec: Clarify some points about a MOP and concurrency
09:20 dalek parrot/m0-spec: review: https://github.com/parrot/parrot/commit/84426eaf5e
09:28 woosley left #parrot
09:31 rohit_nsit08 joined #parrot
09:31 rohit_nsit08 hello everyone
09:33 RonLinix joined #parrot
09:36 dukeleto rohit_nsit08: howdy
09:36 rohit_nsit08 dukeleto: hi ,
09:37 RonLinix hi :)
09:37 rohit_nsit08 is anybody working on implementing javascript compiler on parrot?
09:37 dukeleto rohit_nsit08: you and me :)
09:38 rohit_nsit08 dukeleto : sure :-)
09:46 rohit_nsit08 dukeleto : i have done some coding in javascript and right now looking at javascript compilers , what else do i need to see ?
09:56 dukeleto rohit_nsit08: learn about grammars and compilers
09:56 dukeleto rohit_nsit08: read about PEG.js and about PEG's
09:56 rohit_nsit08 dukeleto : i'm on it , what is lexical analysis?
09:58 dukeleto rohit_nsit08: analyzing some abstract represenation of the source code, basically
09:58 dukeleto 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
09:59 dukeleto rohit_nsit08: these are very good questions, but I must sleep soon
09:59 rohit_nsit08 dukeleto : it's quite interesting :-)
09:59 rohit_nsit08 dukeleto : are u one of the mentors?
09:59 RonLinix left #parrot
09:59 dukeleto rohit_nsit08: write down all your questions and email parrot-dev :) There are a lot of people on there way smarter that me
10:03 cosimo left #parrot
10:04 * dukeleto => self.sleep()
10:05 RonLinix joined #parrot
10:06 rohit_nsit08 hi , which data structure is used to represent parser's output?
10:33 moritz a parse tree
10:33 moritz general questions lead to general answers :-)
10:52 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:58 moritz yes, cloning from github is a good step
10:58 moritz then follow the README
10:58 moritz and ask here when things are unclear
11:00 rohit_nsit08 moritz: thanks i'm clonig
11:00 rohit_nsit08 cloning*
11:04 rohit_nsit08 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:06 moritz rohit_nsit08: the .git directory stores the full history of all changes in the source code
11:08 rohit_nsit08 hmm.. that means i can revert back to previous versions?
11:09 moritz yes
11:10 moritz try
11:10 moritz git log
11:10 moritz to see the past commit messages
11:10 moritz and 'git tag' shows you specially-named snapshots (usually released versions)
11:10 preflex left #parrot
11:13 preflex joined #parrot
11:14 RonLinix left #parrot
11:17 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:18 moritz rohit_nsit08: maybe whiteknight or dukeleto
11:18 moritz rohit_nsit08: though we have lots of good hackers around here that could be mentors for such a project
11:21 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:23 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 moritz and of course you need to know how to write a compiler
11:41 lucian joined #parrot
11:44 kid51 joined #parrot
12:12 ambs joined #parrot
12:15 rohit_nsit08 left #parrot
12:20 kid51 left #parrot
12:21 samwho joined #parrot
12:25 samwho left #parrot
12:30 rohit_nsit08 joined #parrot
12:43 whiteknight left #parrot
12:44 rohit_nsit08 whiteknight: there?
12:45 whiteknight joined #parrot
12:46 whiteknight good morning, #parrot
12:47 moritz hi whiteknight
12:49 Eduardow joined #parrot
12:49 whiteknight good morning, moritz
12:51 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:52 whiteknight hello rohit_nsit08, welcome to #parrot
12:52 * Coke is willing to be a mentor for GSOC.
12:52 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
12:53 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:54 whiteknight right, that's my point. nobody writes code in assembly
12:54 moritz and it can be learned, like every other skill
12:54 whiteknight rohit_nsit08: there are other languages, such as NQP or Winxed, which do most of the same stuff but are nicer to write
12:55 whiteknight 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 ?
12:55 whiteknight no, I'm saying you shouldn't
12:56 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:57 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:58 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
12:58 whiteknight If it were me, I would probably not pick PIR
12:58 whiteknight but, then again PIR is more atomic might be easier
12:58 lucian whiteknight: i'm not so sure about that
12:58 whiteknight not so sure about what?
12:58 moritz you can use another javascript compiler for bootstapping
12:58 moritz *strappin
12:58 moritz g
12:58 lucian whiteknight: i can think of cases where encoding python/js semantics in winxed is awkward
12:58 * moritz can't type
12:59 lucian whiteknight: but less so in PIR
12:59 * lucian has go to. good bye and good luck
12:59 whiteknight lucian: like I said, PIR is more atomic
12:59 lucian left #parrot
12:59 * moritz thinks that PAST would be a good target language... just sayin'
13:00 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"/
13:00 whiteknight that said, a textual representation of PAST, and a suitable compiler for it, might be very nice
13:02 whiteknight rohit_nsit08: sorry, I'm sure we're confusing you
13:02 rohit_nsit08 whiteknight: ya sort of
13:03 rohit_nsit08 whiteknight :  so which one is more better for compiler project , i read PIR tutorials and seemed easy to grab
13:03 rohit_nsit08 whitenight : didn't saw PAST so can't comment
13:04 rohit_nsit08 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
13:04 rohit_nsit08 whiteknight: ok, so i think i should focus on PIR
13:05 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
13:06 rohit_nsit08 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:07 whiteknight basically, yes
13:07 whiteknight although, that project may turn out to be too small to fill the whole summer, if you're a really bang-up programmer
13:07 whiteknight so you're also going to want to figure out what to do after that
13:08 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
13:08 moritz whiteknight: remember that the compiler also needs to some with some built-ins
13:09 moritz s/some/come/
13:09 moritz those that can't be written in pure JS, like Object
13:09 whiteknight moritz: javascript does have common.js, which acts something like an accepted standard library
13:09 whiteknight I suspect the hardest part of the javascript compiler will be eval(), the compreg object and API, etc
13:09 whiteknight also, the object model could be a big issue
13:10 whiteknight 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 ?
13:10 whiteknight rohit_nsit08: We don't know how many students we will be allocated this year
13:11 whiteknight 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
13:12 moritz 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
13:12 whiteknight yes, moritz is right. We need lots of good applications
13:12 moritz 10 would be rather surprising, given that there are more organizations this year
13:13 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 .
13:13 whiteknight like I said, it's a hope
13:13 whiteknight rohit_nsit08: yes, the JavaScript compiler will only have 1 student on it, and a mentor
13:13 whiteknight after the summer is over, more people may get involved
13:14 plobsing left #parrot
13:14 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:15 whiteknight rohit_nsit08: Depending on the proposals we get, I could be a mentor for the JavaScript project
13:16 whiteknight dukeleto has suggested he might be interested
13:16 mtk left #parrot
13:16 whiteknight other people might too
13:16 Coke I would definitely volunteer for the JS one.
13:16 whiteknight ah yes, Coke would be a good possible mentor
13:16 rohit_nsit08 whiteknight: i guessed that from your blogs :-) . helped me to stay on right track
13:17 moritz lots of options. Quite many people here know enough about JS and compiler writing
13:19 whiteknight yes, it's going to be a well-supported project
13:21 mtk joined #parrot
13:27 woosley joined #parrot
13:30 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
13:30 whiteknight last time I tried, I remember that the make system was not very robust
13:31 whiteknight 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
13:31 whiteknight or maybe narwhal
13:31 whiteknight yeah, get narwhal
13:31 whiteknight that's another JS compiler
13:31 whiteknight I think narwhal is just a wrapper around Rhino
13:31 rohit_nsit08 ya narwhal , i guessed that , ok i'll get it
13:31 whiteknight I can't keep it all straight
13:32 rohit_nsit08 whiteknight: no problem , i read about narwhal also today
13:32 whiteknight okay, good
13:33 whiteknight 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 whiteknight 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
13:33 whiteknight stage 2 is using your compiler to compile itself
13:34 whiteknight once you get to that point, save your stage 2, and use it for the next sequence
13:34 whiteknight make a change, use the old version of your compiler to compile the new version
13:34 whiteknight save the new version. Repeat
13:35 whiteknight 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?
13:36 whiteknight rohit_nsit08: I think node.js is a normal js compiler too, except it specializes in asynchronous IO requests
13:36 whiteknight node.js is just a command-line wrapper and a runtime library built around Google's V8
13:36 whiteknight I think it would be usable for this
13:38 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 #parrot
13:39 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?
13:39 PerlJam rohit_nsit08++ btw
13:40 rohit_nsit08 PerlJam: hi
13:41 PerlJam you get pre-karma in anticipation of some good JS work  :)
13:42 rohit_nsit08 PerlJam: :-)
13:42 lucian i'm sorry, how is narwhal a js compiler?
13:43 lucian i thought it just used rhino
13:43 lucian did i misread the backlog?
13:44 * lucian has misread the backlog
13:44 * lucian apologises
13:46 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:47 rohit_nsit08 narwhal supports many other engines also except rhino
13:50 whiteknight so what, exactly, is narwhal? just a thin wrapper around other engines?
13:50 lucian whiteknight: yeah
13:50 lucian rohit_nsit08: i just noticed, cool
13:51 lucian whiteknight: it's a "shell"
13:51 whiteknight oh, nice
13:51 rohit_nsit08 whiteknight: ok, narwhal is working fine on my system
13:51 whiteknight awesome, good first start
13:52 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
13:52 rohit_nsit08 whiteknight: i think cafe requires jison also , is it?
13:53 lucian wait, no. node.js is just v8 + libevent
13:53 lucian whiteknight: yeah, v8 does that anyway
13:53 whiteknight rohit_nsit08: Probably. jison is written by the same guy. jison is the parser
13:53 whiteknight rohit_nsit08: I don't know if cafe comes with jison, or requires it separate
13:55 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
13:55 rohit_nsit08 lucian: hmm , but it's showing that jison: command not found
13:55 whiteknight rohit: okay, get jison. I think narwhal has a package manager which you can use to get it quickly
13:56 rohit_nsit08 lucian: i'm trying to make cafe , since there is makefile in it, is that the correct way ?
13:56 whiteknight tusk
13:56 whiteknight http://narwhaljs.org/packages.html
13:56 lucian npm install jison should fix that
13:57 lucian wait, npm is nodejs
13:58 whiteknight yeah, i think it's tusk install jison
13:59 whiteknight type "tusk help" for help
13:59 rohit_nsit08 whiteknight: doing that
14:00 whiteknight awesome
14:00 rohit_nsit08 whiteknight: "tusk help " on commandline is giving some error
14:00 rohit_nsit08 Error occurred during initialization of VM
14:00 rohit_nsit08 java/lang/NoClassDefFoundError: java/lang/Object
14:01 * 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
14:01 lucian it has no help, i think
14:02 lucian 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
14:03 rohit_nsit08 let me read about narwhal , i must be missing something
14:03 * lucian suggests trying nodejs
14:04 rohit_nsit08 but cafe requires narwhal , can it be avoided?
14:04 lucian i'm pretty sure it works fine with nodejs
14:05 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 rohit_nsit08 isn't it
14:11 rohit_nsit08 do i need to initialize vm before using tusk command
14:11 rohit_nsit08 ?
14:13 rohit_nsit08 hmm i went to narwhal's irc ,no reply so far :-(
14:14 lucian i've only ever used node, so i don't know, sorry
14:15 Andy_ joined #parrot
14:15 whiteknight the makefile for cafe is extremely simple
14:15 whiteknight I'm sure it's possible to redo it with node
14:15 rohit_nsit08 lucian: ok i'll see what i can do about it
14:16 whiteknight rohit_nsit08: part of the javascript compiler project will be making a build system that doesn't have these problems
14:16 whiteknight rohit_nsit08: so take notes, and do it better yourself
14:16 lucian i'm pretty sure i ran a js parser on node, i'm not sure if it was cafe
14:17 rohit_nsit08 whiteknight: i read that file , so my first job is to make cafe work with node
14:25 whiteknight rohit_nsit08: good first plan
14:26 lucian whiteknight: Cake works
14:28 lucian whiteknight: https://github.com/jashkenas/coffee​-script/blob/master/src/cake.coffee
14:29 whiteknight i find it hard to think of "cakefiles" without smirking
14:29 contingencyplan joined #parrot
14:30 * lucian nods
14:30 * lucian smirks
14:30 lucian quite nice though, http://jashkenas.github.com/coffee-script/ (search for cakefile)
14:33 moritz is js designed to make you hungry?
14:35 lucian moritz: it's undesigned to make you crazy. but hunger is a common side-effect
14:46 plobsing joined #parrot
14:49 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:50 lucian rohit_nsit08: try npm install ....
14:50 lucian rohit_nsit08: node.js is 1) cli interpreter 2) network library
14:51 rohit_nsit08 and i have to be concerned about cli interpreter only i guess
14:52 lucian yep
14:52 lucian and npm is its package manager
14:52 rohit_nsit08 npm install is not working , do i  need to do something after installing the node.js
14:52 rohit_nsit08 start some service etc
14:53 rohit_nsit08 i installed it in my home directory and set the path variables as given on their site
14:54 whiteknight the hardest part of this whole project may be just getting an existing compiler to work
14:55 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:56 woosley left #parrot
14:56 dmalcolm joined #parrot
14:56 lucian npm install jison
14:57 PacoLinux joined #parrot
15:00 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 rohit_nsit08 whiteknight: jison installed
15:00 rohit_nsit08 whiteknight: finally
15:01 whiteknight awesome
15:03 samwho joined #parrot
15:03 samwho left #parrot
15:04 dalek TT #2056 created by usvhkdpkojwxyilj3++: Memory card Data Recovery - A real advantage to extract lost information ...
15:04 dalek TT #2056: http://trac.parrot.org/parrot/ticket/2056
15:04 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 #parrot
15:09 rurban left #parrot
15:09 rurban_ is now known as rurban
15:09 lucian rohit_nsit08: doesn't it work already?
15:10 rohit_nsit08 node and npm are working , jison is installed properly
15:10 rohit_nsit08 how can i test if cafe is working too
15:11 lucian rohit_nsit08: can't you run it?
15:11 rohit_nsit08 remember that makefile ? cafe is designed to work with narwhal i suppose
15:11 rohit_nsit08 or am i wrong here?
15:11 lucian rohit_nsit08: replace narwhal with nodejs
15:11 rohit_nsit08 let me try
15:12 mj41 left #parrot
15:17 rohit_nsit08 jison lib/js/grammar.jiy lib/js/lexer.jil
15:17 rohit_nsit08 make: jison: Command not found
15:17 rohit_nsit08 it's giving error
15:18 Psyche^ joined #parrot
15:18 lucian rohit_nsit08: jison in path?
15:18 Patterner left #parrot
15:18 Psyche^ is now known as Patterner
15:18 rohit_nsit08 i installed jison from npm so it must be
15:19 lucian check
15:21 rohit_nsit08 left #parrot
15:22 rohit_nsit08 joined #parrot
15:22 rohit_nsit08 lucian: sorry my net connection went off
15:23 rohit_nsit08 no jison is not in PATH variable
15:24 ambs left #parrot
15:25 bacek joined #parrot
15:28 lucian rohit_nsit08: perhaps npm puts all its binaries in one place and  you can add that to PATH
15:30 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:31 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
15:32 rohit_nsit08 ya i remembered i had to do that when last time i faced such problem
15:36 dalek TT #2057 created by koscucqjxjrfgbly6++: What about considering homeschool for your youngster?
15:36 dalek TT #2057: http://trac.parrot.org/parrot/ticket/2057
15:40 whiteknight wtf is up with all this trac spam recently?
15:41 moritz sombody wrote a bot that automates it
15:41 moritz and it now found trac.parrot.org
15:43 cogno joined #parrot
15:43 whiteknight left #parrot
15:44 marcel_r joined #parrot
15:44 rohit_nsit08 lucian: ok now jison is in the path and error has changed
15:44 rohit_nsit08 [droid@localhost cafe]$ make
15:44 rohit_nsit08 jison lib/js/grammar.jiy lib/js/lexer.jil
15:44 rohit_nsit08 /home/droid/local/node/bin/jison: line 1: syntax error near unexpected token `('
15:44 rohit_nsit08 /home/droid/local/node/bin/jison: line 1: `var JISON = require('../jison'),'
15:44 rohit_nsit08 make: *** [build-js] Error 2
15:45 rohit_nsit08 what is this ../jison doing here?
15:47 ambs joined #parrot
15:55 whiteknight joined #parrot
15:59 cotto ~~
16:00 cogno left #parrot
16:01 whiteknight hello cotto
16:04 lucian left #parrot
16:15 dalek parrot/m0-spec: e92d06d | cotto++ | docs/pdds/draft/pdd32_m0.pod:
16:15 dalek parrot/m0-spec: break Contexts into its own section, update bytecode description
16:15 dalek parrot/m0-spec: review: https://github.com/parrot/parrot/commit/e92d06d481
16:26 marcel_r_ joined #parrot
16:28 sigue left #parrot
16:31 marcel_r left #parrot
16:31 marcel_r_ is now known as marcel_r
16:38 rohit_nsit08 left #parrot
16:38 dalek TT #2058 created by rytulhgpuurfxu2++: Argan oil or Moroccan oil Functions Miracles with regard to Pores and skin
16:38 dalek TT #2058: http://trac.parrot.org/parrot/ticket/2058
16:43 dodathome joined #parrot
16:47 rohit_nsit08 joined #parrot
16:47 cotto_work ~~
16:48 rohit_nsit08 whiteknight: hi , narwhal and jison are now working perfectly ( i tested jison and it is working)
16:48 rohit_nsit08 and while making cafe , now error came a step further
16:49 rohit_nsit08 whiteknight: this time there is a problem with nodejs command
16:49 rohit_nsit08 whiteknight : has it anything to do with node.js
16:49 rohit_nsit08 ?
16:54 whiteknight i have no idea
16:54 whiteknight node.js may alias itself to "js", which I think narwhal does too
16:58 whiteknight I only played with cafe and jison once, a few months ago. I didn't do much with it
16:58 whiteknight so I'm not going to be huge help in getting it up and running
16:58 whiteknight at least, not until I look at it again
17:02 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 rohit_nsit08 whiteknight: i learnt so much today, that i had in whole week :-D
17:02 whiteknight yeah, we're all about the learning
17:03 moritz welcome to #parrot :-)
17:03 rohit_nsit08 thanks everyone
17:03 whiteknight rohit_nsit08: no problem. We're in this chatroom all day every day, and we like to answer questions
17:05 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:09 ShaneC left #parrot
17:16 rohit_nsit08 whiteknight: how can i test a parser generated from jison command?
17:26 whiteknight rohit_nsit08: I have no idea how you test it. Like I said, I didn't use it much
17:26 whiteknight you may have to ask zaach, the guy who created it
17:27 whiteknight 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 :-)
17:27 whiteknight I sent him a message a while back, and he replied pretty quickly. Seems like a good guy
17:27 whiteknight hopefully we don't have to bother him too much :)
17:28 rohit_nsit08 btw do u remember any node program to test it i saw it in this link https://github.com/zaach/j​ison/blob/master/README.md have a look pls
17:28 whiteknight Node == node.js
17:29 whiteknight http://zaach.github.com/jison/docs/
17:30 rohit_nsit08 ohh i'm already using narwhal and now we have to use node.js also , :-) ,
17:30 whiteknight fun
17:31 rohit_nsit08 whiteknight: wait , i think the same can be done with js command
17:31 whiteknight http://zaach.github.com/jison/try/
17:31 rohit_nsit08 narwhal has the same feature i guess
17:31 whiteknight rohit_nsit08: we're both learning more today than we have all week :)
17:31 rohit_nsit08 :-D
17:33 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 whiteknight :)
17:34 rohit_nsit08 whiteknight: it worked
17:34 whiteknight really? Awesome. That changes the timeline considerably
17:34 rohit_nsit08 narwhal command is equivalent to node
17:35 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
17:36 whiteknight okay, so you have that compiler, you need to set up a backend to output PIR code
17:36 whiteknight (or winxed, or NQP, or whatever)
17:39 rohit_nsit08 yup , btw tell me if i'm wrong , i have to write a code generator ? is it
17:40 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
17:40 whiteknight We want a translator, JS -> PIR
17:40 rohit_nsit08 we'll generate the parser from jison
17:40 rohit_nsit08 and than after generating the parse tree we will use code generator to get the pir code
17:41 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?
17:41 rohit_nsit08 what's IR?
17:41 whiteknight BNF wouldn't be used directly. BNF is used to construct the grammar and the parser
17:41 whiteknight IR is the intermediate representation. that's typicall the parse tree (Also "Syntax tree", "Abstract syntax tree", "AST", etc)
17:42 whiteknight 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 whiteknight PAST is a parse tree type used by Parrot with lots of functionality
17:42 rohit_nsit08 so my code will need to understand that parse tree and generate PIR code
17:42 whiteknight if you modify cafe to use PAST instead of it's current system, you can use the PAST code generators instead
17:43 whiteknight 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
17:43 rohit_nsit08 ?
17:43 whiteknight PAST is the parse tree
17:43 whiteknight Take a look at this file: https://github.com/zaach/cafe/​blob/master/lib/js/codegen.js
17:44 whiteknight that's the cafe code generator. It outputs javascript
17:44 whiteknight you need to change that to output PIR
17:44 whiteknight again, that's the most basic
17:45 ShaneC joined #parrot
17:49 PerlJam Are there any good tutorials on PAST to help people like rohit_nsit08 get started?
17:49 PerlJam Or just the Squaak tut.?
17:49 whiteknight squaak doesn't really cover PAST at all
17:49 PerlJam exactly :)
17:49 whiteknight except to say it exists, some handwaving, and then we have a compiler
17:52 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 PerlJam Mabye that could make for a GSoC project even?
17:52 PerlJam (or several)
17:55 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
17:56 whiteknight Take a look at the "ForStmt" part there
17:56 whiteknight for (var i = 0; i < 5; i++) { ... }
17:57 whiteknight in the parse three, that's ForStmt (Child0, child1, child2) { child4 }
17:57 theory joined #parrot
17:58 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
18:01 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
18:01 whiteknight in your compiler, that will be changed to .toPIR()
18:01 whiteknight or .toParrot()
18:02 whiteknight that method recursively calls another rule for that node
18:02 rohit_nsit08 whiteknight: and lvl is refrencing to tree's level?
18:02 whiteknight I think that's the indentation level of the generated code
18:02 whiteknight to make it pretty
18:03 rohit_nsit08 ohh, got it , lest all the code will end up in one line
18:03 whiteknight node types are defined here: https://github.com/zaach/cafe​/blob/master/lib/js/nodes.js
18:03 whiteknight right
18:04 whiteknight 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 whiteknight it's actually a pretty simple design, if you figure out what's going on
18:05 ambs left #parrot
18:05 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 :-)
18:06 whiteknight moritz: exactly, so it's a pretty good place to start building a new compiler from
18:06 ambs joined #parrot
18:07 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 whiteknight once your compiler generates PAST, you get all the benefits: optimizations, analysis tools, alternate backends, etc
18:07 moritz don't forget to insert "test, test, test" after each step
18:08 whiteknight right, steps 1a, 2a, and 3a
18:08 NotFound Testing is for cowards, ship it!
18:08 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
18:08 whiteknight or, set up a language loader so you can do the opposite (call Rakudo from JS)
18:09 whiteknight a library loader to pull in .pbc libraries, and an NCI interface for easily using native libraries
18:09 whiteknight oh, and a working object model
18:09 whiteknight all easy stuff, though there's a lot of it
18:09 rohit_nsit08 whiteknight: what is rakudo and cardinal?
18:09 whiteknight Rakudo is the Perl6 compiler project. Cardinal is the Ruby compiler project
18:10 whiteknight we also have Partcl (Tcl compiler), Pynie (the Python compiler project, which is probably also going to be in GSoC this year)
18:10 whiteknight and then we have Winxed, a low-level language that's similar to JS but lower
18:10 whiteknight and NQP, which is a low-level subset of Perl6
18:10 rohit_nsit08 whiteknight: i think i should stick to javascript compiler for the time being :-)
18:11 whiteknight rohit_nsit08: Right, but once it works, we're going to want to make it work with other compilers too
18:11 whiteknight WORLD DOMINATION
18:11 * PerlJam wonders who's Pinky to whiteknight's Brain
18:12 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 ?
18:12 whiteknight rohit_nsit08: of course! We write lots of test suites and are very good at it
18:13 whiteknight 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
18:13 rohit_nsit08 whiteknight : ya pls
18:13 PerlJam rohit_nsit08: if you do have problems, there will be lots of helpful people here :)
18:13 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
18:13 rohit_nsit08 whiteknight: i need some experience in testing
18:14 whiteknight then, when you have all your features, you have all your tests
18:15 ambs left #parrot
18:15 ambs joined #parrot
18:15 rohit_nsit08 whiteknight: i like this irc , people don't sleep :-)
18:16 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
18:17 whiteknight rohit_nsit08: it's not a big deal. Testing is easy.
18:18 whiteknight 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:21 * marcel_r is looking forward for this tutorial/blog post/something about testing.
18:21 whiteknight :) I'll start writing it today
18:23 marcel_r whiteknight: Thanks :)
18:24 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:28 dalek winxed: r873 | NotFound++ | trunk/winxedst1.winxed:
18:28 dalek winxed: fix amazingly stupid mistake in constant string optimization
18:28 dalek winxed: review: http://code.google.com/p/w​inxed/source/detail?r=873
18:28 dalek winxed: r874 | NotFound++ | trunk/winxedst1.winxed:
18:28 dalek winxed: instanceof second operand can be now any class specifier
18:28 dalek winxed: review: http://code.google.com/p/w​inxed/source/detail?r=874
18:29 * 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 PerlJam s/tries/tried/
18:32 NotFound PerlJam: you should probably avoid the term "craftmanship" and call it somehing like "enterprise oriented advanced programming disciplines"
18:32 whiteknight "...with widgets"
18:33 NotFound s/programming/software engineering
18:33 dalek winxed: r875 | NotFound++ | trunk/pir/winxed_compiler.pir:
18:33 dalek winxed: update installable files
18:33 dalek winxed: review: http://code.google.com/p/w​inxed/source/detail?r=875
18:35 NotFound Where I work we send faxes to people that have email accounts and they call it "Modernization and Innovation"
18:36 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 PerlJam (Every single student I've hired has known absolutely *nothing* about these concepts)
18:37 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)
18:37 NotFound PerlJam: I don't think so.
18:38 NotFound It is the University of La Coruña
18:38 NotFound And probably several other Spain's universities.
18:39 NotFound Don't know if they still do, I don't ask no more to avoid depressing thoughts.
18:40 cotto_work despammed
18:41 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
18:42 plobsing hmmm... I haven't updated in a while. I'll try that.
18:42 NotFound plobsing: less than a half hour ago.
18:44 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:47 Payne joined #parrot
18:48 whiteknight rohit_nsit08: goodnight. See you again soon
18:49 rohit_nsit08 whiteknight: good night :-)
18:54 rohit_nsit08 left #parrot
19:02 Payne left #parrot
19:05 marcel_r left #parrot
19:14 cotto_work despammed
19:16 cotto_work Tickets 2049 through 2061 were spam.  Suggestions?
19:19 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.
19:20 cotto_work We already require email confirmation for new users.
19:20 plobsing what free email system are the spammers using? hotmail?
19:20 cotto_work I'm tempted to suggest manual-only verification, but I hate that.
19:20 NotFound Do they like more receiving the spam?
19:22 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:23 cotto_work plobsing: yahyoo
19:23 cotto_work *yahoo
19:23 plobsing what fraction of our legit users use yahoo?
19:24 cotto_work looks like several do
19:25 * cotto_work noms
19:27 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.
19:28 plobsing (2) not terribly good accessibility wise. contrary to popular beleif, blind people use computers too
19:28 plobsing (3) they are getting harder for humans to answer correctly (due to the captcha-bot arms race)
19:29 plobsing (4) any additional impedance between users and submitting bug reports is bad
19:30 atrodo I would guess anything thing that lowers impedance between users and bug reports also lowers impedance for bots
19:31 plobsing unfortunately, this is true
19:34 plobsing 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:35 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.
19:36 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:38 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:40 Coke it's better in that only the admins have to do work.
19:40 Coke also, it would only be for new accounts.
19:40 Coke any already-approved users get a free pass.
19:41 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)
19:42 Coke (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?
19:43 Coke parrotbug does nothing.
19:43 Coke unless someone fixed it.
19:44 plobsing parrotbug is broken?  somebody submit a parrotbugbug!
19:48 theory left #parrot
19:51 lucian_ akismet would be cool
19:51 lucian_ is now known as lucian
19:51 lucian i've found it quite good
19:55 lucian whiteknight: are there any docs on PAST?
19:55 whiteknight I suspect the only PAST documentation is the POD in the source files themselves
19:55 lucian i'm specifically interested in using it from outside parrot (from a file is ok)
19:55 lucian i see
19:56 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
19:56 whiteknight I don't know much about PDD26. By it's nature it *should* be more about design and less general user documentation
19:56 whiteknight I wouldn't be surprised if that wasn't the case
19:56 PerlJam aye.  But pdd26 + the POD in the files is what I used in the past and it was quite workable.
19:57 PerlJam Though I haven't looked in ages.
19:58 lucian hmm, it doesn't seem to have a textual representation
19:59 PerlJam lucian: it does if you dump the data structures  :)
19:59 lucian you mean load. my frontend is python
19:59 lucian then i guess i'm better off with pir/winxed
20:02 PerlJam lucian: you mean instead of python?
20:03 lucian no, i mean to generate
20:03 PerlJam oh, I see.
20:03 lucian the parser is python, i need to generate something to run on parrot
20:03 lucian PAST could possibly be easier to do
20:03 lucian but since it has no text format, it's not an option
20:04 PerlJam or ... you could make a text format based on the existing docs and make the next guy happy  :)
20:12 cotto_work M0 question: will add and multiply be enough?
20:14 cotto_work Lua has add, sub, mul, div, mod and negate (though subtract is just a special case of add)
20:17 ambs left #parrot
20:17 cotto_work as is negate
20:20 mj41 joined #parrot
20:24 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:29 whiteknight left #parrot
20:29 PerlJam you really only need a couple of different logic gates and you can build all of the others from there :)
20:30 plobsing left #parrot
20:31 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
20:32 cotto_work 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 #parrot
20:33 cotto_work Actually, either negation or subtraction will probably be necessary.
20:34 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 atrodo or have a bitwise xor
20:36 Hackbinary joined #parrot
20:36 lucian why *not* add more ops? especially math ops
20:36 plobsing we can implement everyting in terms of nand!
20:41 ambs joined #parrot
20:41 lucian i'd expect M0 to have enough ops to efficiently translate to common hardware
20:43 cotto_work It's interesting that the Lua VM doesn't have any ops for bitwise manipulation.
20:44 cotto_work lucian: modern hardware can do a lot of things
20:44 lucian cotto_work: yeah, i know
20:45 lucian i don't know if the jit could figure out to use the native mul when M0 emulates it
20:46 cotto_work Ah.  Lua doesn't support bitwise ops as a language feature.
20:46 lucian really? that's odd
20:46 lucian well, it doesn't even have ints
20:46 cotto_work If M0 wants to pretend it's C, bitwise ops are kinda important.
20:46 * lucian shouldn't be surprised
20:47 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
20:47 lucian cotto_work: yeah, all numbers are doubles
20:49 NotFound Did we use bitwise ops in ops or pmc for any other thing than implementing bitwise ops?
20:49 cotto_work NotFound: flags
20:50 cotto_work at the C level
20:51 NotFound Good point
20:53 atrodo plus, you're pretty much saying that you can't natively support any language that has bitwise ops
20:55 cotto_work arm has AND, EOR (xor?), ORR (or) and BIC (AND NOT)
21:03 PerlJam left #parrot
21:03 tadzik left #parrot
21:05 pmichaud left #parrot
21:08 Util left #parrot
21:09 cotto_work also, logical shift L/R, rotate L/R and arithmetic shift right
21:11 lucian right. llvm has a bunch of those as well
21:11 lucian it would make sense to me to support at least a large subset
21:12 cotto_work http://llvm.org/docs/LangRef.html#bitwiseops
21:12 cotto_work that doesn't look like that many
21:13 cotto_work shl, logical shr, arithmetic shr, and, or, xor
21:16 * lucian sheepishly suggests renaming M0 to LLVM IR
21:16 lucian and mul too http://llvm.org/docs/LangRef.html#binaryops
21:18 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:19 lucian i know, but wouldn't it be a good first version?
21:19 lucian M0.01 = LLVM IR
21:19 lucian them M1, the C-like parrot system language can be written
21:19 plobsing LLVM IR is quite complicated to implement for anything that isn't named LLVM
21:20 lucian designed in the first place
21:20 lucian M1 can be a winxed fork, close revived or w/e
21:20 lucian then when M1 is stable, M0.02 can be a subset of llvm ops
21:21 lucian M0.03 can become more llvm-neutral
21:21 * lucian is just rambling
21:23 cotto_work is there anything cmp can do that sub can't?
21:23 cotto_work both don't seem necessary
21:27 cotto_work 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
21:28 cotto_work lucian: "PIR" is another spelling for "M1"
21:29 lucian then nothing has been achieved
21:29 lucian sure, for backwards compatibility
21:30 cotto_work as is the charming mix of C and magic that implements our PIR ops and PMCs
21:30 dodathome left #parrot
21:31 lucian sure, but do you want to keep that?
21:31 cotto_work of course not.  We just want equivalent power.
21:32 lucian then why not focus on designing an equivalently powerful but nicer parrot system language?
21:32 cotto_work sorry for being unclear
21:32 lucian and then design M0 to fit PIR and opsc for backwards compat, and the new system language?
21:35 cotto_work We will need to figure out which M0 overlay language will be the recommended one for parrot guts development.
21:36 mj41 left #parrot
21:36 lucian sure, we agree on that
21:37 lucian but my opinion is that should be done before M0
21:37 lucian i think it's best to first and foremost design for the preferred interaction method
21:38 bbatha joined #parrot
21:38 soh_cah_toa joined #parrot
21:40 lucian otherwise, follow the design of proven assemblies more carefully
21:40 lucian s/carefully/closely/
21:42 cotto_work The current interaction methods are C and PIR.  If M0 can do what those can do, it's complete.
21:52 dalek TT #2062 created by dkkfqnoviohwgg8++: An Overview of Anonymous VPN service
21:52 dalek TT #2062: http://trac.parrot.org/parrot/ticket/2062
21:53 cotto_work deleted
22:00 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 bbatha left #parrot
22:01 bbatha joined #parrot
22:03 lucian again, i'm likely rambling
22:07 cotto_work With the math and bitwise ops, we're up to 34 (30 permanent)
22:09 dalek parrot/m0-spec: 04dfca2 | cotto++ | docs/pdds/draft/pdd32_m0.pod:
22:09 dalek parrot/m0-spec: fill out math and bitwise ops
22:09 dalek parrot/m0-spec: review: https://github.com/parrot/parrot/commit/04dfca2315
22:15 lucian cotto_work: that seems like a few more could be added if necessary
22:18 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
22:21 cotto_work lucian: I'm thinking it's too many.
22:21 cotto_work 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.
22:21 lucian too many for what?
22:22 cotto_work not the minimum we can get away with
22:22 lucian i disagree with the second part of that, i guess
22:22 lucian ease of use should be irrelevant
22:22 lucian but efficiency, not so much
22:22 lucian for example, how about SIMD?
22:27 plobsing left #parrot
22:29 fperrad left #parrot
22:29 ambs left #parrot
22:40 particle left #parrot
22:45 whiteknight joined #parrot
22:50 kid51 joined #parrot
23:01 luben joined #parrot
23:03 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:04 cotto_work goto
23:04 cotto_work ah
23:04 luben it is not in ppd
23:04 cotto_work we don't seem to have that (or a conditional version)
23:04 luben pdd
23:05 luben yes
23:05 cotto_work actually, that'll be done by poking the pc
23:05 luben how we poke conditionaly to pc?
23:05 luben we do not have cmp
23:07 rurban_ joined #parrot
23:07 cosimo joined #parrot
23:09 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:10 Tene luben: I recommend you go look at the current flow control op implementations, to see what's currently used.
23:10 rurban left #parrot
23:10 rurban_ is now known as rurban
23:11 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?
23:11 luben cotto, OK
23:11 plobsing joined #parrot
23:12 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?
23:13 Tene luben: look at the current parrot ops for inspiration about what the M0 ops would look like.
23:13 Tene was my suggestion.
23:13 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
23:13 lucian i don't think a jit could figure out that pc changes mean jumps
23:14 luben Tene, OK, I know the parrot ops. I'm just concerned that they miss from M0 pdd
23:15 luben lucian, yes
23:16 lucian in general, i'm skeptical towards M0's goal to be radically minimal
23:17 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
23:18 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 cotto_work </ot>
23:18 luben in the reduced ISA we have lost a ton of semantic info that could help the optimizer
23:19 luben 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
23:20 lucian but i do believe M0 should be at least as high level as llvm, perhaps even as high as jvm bytecode
23:20 particle joined #parrot
23:22 luben lucian, agree
23:22 lucian that would certainly require more ops, i don't know how many
23:23 lucian i do agree however that there should be less than 100
23:23 lucian as a ballpark number
23:24 bbatha left #parrot
23:25 plobsing chromatic++ pointed out a lot of Dis VM papers in the lead up to Lorito.
23:27 Eduardow left #parrot
23:27 lucian skimming a paper, they seem to have quite a few more ops
23:27 lucian is it a proven design, in the field? i don't know
23:28 dmalcolm left #parrot
23:28 pjcj left #parrot
23:28 bbatha joined #parrot
23:29 lucian does anyone actually use inferno, btw?
23:29 luben at least Dis VM have control flow ops and functions
23:30 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:31 lucian plobsing: right. so nothing significant that i've missed
23:32 tewk left #parrot
23:34 plobsing lucian: if everybody used "proven designs" we'd still be using cobol
23:35 lucian plobsing: that's not the only requirement in my eyes
23:35 bbatha left #parrot
23:35 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:36 lucian but i do think a very minimalist design needs to provide very good reasons for existing
23:40 benabik joined #parrot
23:42 pjcj joined #parrot
23:43 bbatha joined #parrot
23:53 theory joined #parrot
23:54 kid51_at_dinner is now known as kid51
23:58 kid51 bbatha ping

| Channels | #parrot index | Today | | Search | Google Search | Plain-Text | summary

Parrot | source cross referenced