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