NAME: Rohit Jangid
EMAIL ID: firstname.lastname@example.org
GOOGLE ID: rohit.nsit08
OTHER CONTACT INFO:
Irc nick-name on #parrot channel: rohit_nsit08
skype id : rohit_nsit08
BENEFITS TO THE PARROT VM AND OPEN SOURCE COMMUNITY:
3. I will use already available compiler/interpreter node.js which is using Google’s v8 engine or ‘narwhal’ which is using ‘rhino’ engine as bootstrap compiler (stage 0 compiler) to generate parrot friendly PIR/PBC code.
If problems occur, creating a Custom Object Model will be the last option.
5. I will compile generated PIR code in parrot to get a independent stand-alone executable compiler, this will become our STAGE 1 compiler which will be able to compile its own source code.
6. Further modifications will be made to Stage 1 compiler by adding support for modules written in other languages. Any modification to stage 1 will result in a feature rich stage 2 compiler.
8. Necessary optimizations and tests would be conducted to ensure stable working of stage 1 compiler.
9. If all goes well, I will attempt to transform original AST into parrots PAST OBJECT so that I can use optimizations and other facilities available on Parrot..
10. Modification in the generated source code would be done followed by compiling it in itself in cycles for further improvements to get desired performance.
11.Test-suite will be implemented in two parts:
Part1: Before we have stage 1 ready, testing will be implemented using rosella test.pbc
My current status:
Target: To get acquaint with the in-depth details of the project, and testing framework.
April 26 – May 15: Complete all the work on cafe, jison and nodejs resolve all issues if any. Study the code generator’s code in café.
Target: Set up a working environment prepared to go for stage 1 compiler.
MILESTONE 0: All groundwork would be finished by this stage so as to start the actual coding. Discuss detailed plan of project, backup policy with the mentor. Finalize stage 0 compiler design.
University Exams: (tentative dates) May 16 – May 31 (absent during this time) Summer Vacations from August 1
ACTUAL CODING STARTS:
Every week will begin and end with a meeting with mentor discusssing the current status and plan for next week.
Week 1) June 1-June6: Work on cafe backend, transform code generator to emit code in PIR/PBC.
Week 2) June 7-June 13: Carry on with backend code, work on implementing the Object Model, improving the code structure and add tests.
Week 3) June 14-June 22: Remove errors if any from the week 2 project. Build an executable and get the stage 1 compiler ready.
MILESTONE 1: Compiler is able to generate PIR code.
Week 4) June 23-June 29: Run the generated PIR code on Parrot. Remove all the errors from the compiler, add test- suite, and test for crash and failures. Debug and test work done. Start documentation up to this stage.
MILESTONE 2: Stage-1 Compiler Running on Parrot.
Week 5) June 30-July 6: Will attempt to transform parrot’s PAST from original AST. This will be done in parallel to the testing of stage 1 compiler. Add more test suites if necessary.
MILESTONE 3: More test-suites, and complete documentation till stage 1.
Week 6) July 7-july 13: Discuss PAST status with mentor and decide how to proceed further, make changes in plan if needed.
MILESTONE 4: PAST may or may not be introduced to compiler, depending on discussion with mentor and plan out for the next week.
Week 7) July 14-July 20: Work again on PAST with better strategy, add more tests, study about stage 2 features and how to implement them.
MILESTONE 5: Most probably a compiler with PAST, if failure occurs , stick to backup policy.
Week 8) July 21-July 27: project compilation upto stage 1 , complete any backlogs , this time is for compensate for any unknown break during previous weeks , complete documentation , finish final test suite till this stage.
MILESTONE 6: successful project finished upto stage 1.
Week 9) July 28-August 3: start hacking on stage 1 compiler ,to add special parrot features like cross library communication , start reading standard compilers api. Discuss with mentors about the necessary features that can be implemented.
Week 10) August 4-August 10 : Work on the decided features , do necessary study. Keep discussing project improvements with mentor , start to think about test suite for new compiler (JSpec or any other), Discuss about the new test-suite with mentor and start making tests
MILESTONE 7: Decided features implemented on Compiler.
Week 11)August 11-August 17: Create more tests and test the features if any added , work on more features . test the compiler for all previous stages to ensure everything is intact and working perfectly if not , stick to backup policy and stop further work and finish main compiler (stage 1) to ensure it’s working perfectly .
MILESTONE 8: All features Implemented, Test Suite Finished. Project working smoothly on Parrot.
Week 12) August 18-August 22: Wind up the project , complete documentation work , improve code structure ,confirm project status with the mentor .
MILESTONE 9: a complete successful GSOC project.
REFERENCES AND LIKELY MENTORS:
Discussed project idea with
Whiteknight* (Andrew Whitworth)
Dukeleto* (Jonathan "Duke" Leto)
(* irc nick-names)
I will be happy to use Artistic 2.0 license for my project.
Clear the project details before the actual coding to avoid confusion later. Keep in touch with mentor and the authors of the tools and libraries if used any. Make Backup policy in such a way to keep focus on imp goals to avoid major problems that can stop project’s progress. Generate useful tests to reduce errors and crashes. Testing at various stages of compiler design to ensure sustained development and in case of any problem, I will be able to go to previous stage.
Test the code after every significant change in source code to ensure stable configuration. In case of failures in stage 2 compiler , go back to stage 1 compiler and ensure it’s working perfectly , if not make it work and add more tests and get back to where we left the project. Build compiler in stages and sub-stages so that moving back and forth from one sub stage to other is possible in case of sudden failure. Highest priority is the working stage 1 compiler , stage 2 and inclusion of PAST will be attempted only after a stable stage 1 compiler.