Posts

Showing posts with the label open source

Contributing to Tab for a Cause!

Image
It's been a long year of many efforts, but I'm excited to be back and blogging on ways to contribute to open source! Recently, I've been looking at a project called Tab For A Cause, which is a cute little chrome extension that enables you to donate ad revenue to the charity of your choice! They have a couple open issues, including some good starter ones for frontend developers trying to dip their toes into the open source world. In this blog post, I'll talk you through the steps of how to get set up to contribute, and at the end, I'll talk you through what I plan on doing next! Getting Started: First off, I checked out their git repo  to see if there were any contributing guidelines or any setup steps in the README . There wasn't a community contribution guidelines doc, but the README did provide some basic prerequisite requirements as well as setup steps. Installing the Prerequisites I'm working on a Mac, so I am using Homebrew to handle my installations. A...

Summer in Review

Image
Hello! My name is Elli Peacock and I have spent the past three months working on a GSoC project to enable the creation of single file, self contained executables for Perl 6. If you would like to look at the code for my contributions, you can check them out on the  self-contained-executable branch of NQP.   As the summer comes to an end, I thought it would be appropriate at this point to summarize what I have accomplished so far, and what additional capabilities I would like to add in the future. There were four major phases to this project: generating ELF files (May/June), handling bytecode directly (July), adding the --compile capabilities to NQP (July), and enabling the use of modules (August). In this post, I will start with the original premise of my project, go over the highlights from the four major phases of work, and then discuss what improvements that would be nice to make in the future. I will also touch on my general experience in the GSoC and my experience worki...

Modifying Perl 6 Executable to Run Bytecode

Image
Exciting news! I've successfully modified  perl6  to run bytecode! You can look through my changes on Github here . In this post, I'm going to briefly go over what happens when you run perl6 , what I added to get the additional functionality, a few issues I ran into along the way, and what I'm doing next. What does running perl6  do? Let's imagine you are using MoarVM as your backend, Rakudo as your compiler, and have just written the program foo.pl6  and want to run it. You call perl6 foo.pl6.  What happens next? main.nqp begins to execute. This is the very beginning of the initialization process necessary for your program to run. An instance of the compiler  is created and set up . The path to the various Perl6 and NQP libraries that you may need are determined and bound to environment variables. Several command line options are added . Then, the compiler is actually entered with a call to command_line . command_line begins to execute. This me...

Hello World!

Image
News on the GSOC project! I've been able to get "Hello world!" working! Here are my notes on the process of getting it to this point. Figuring Out the Right Approach On Sunday, I had a discussion on #moarvm with mornfall , nine , and brrt about the path forward I suggested in last week's update. Mornfall pointed out that replacing _start would likely be way more headache than it was worth. They instead suggested using objcopy to convert a text file containing the MBC bytecode into a .o file (also called relocatable ELF file), and then writing a small C program which invokes MoarVM using the bytecode packaged in the .o file. This is essentially the approach I used for my first attempt, with a few tweaks. As pointed out by nine, it currently isn't possible to directly call moar and have it execute MBC. If you try, you'll be greeted with this error message: Nine mentioned  that there is good deal of necessary setup that is done when perl6 is calle...

Getting Started: Developing for Perl 6

Three weeks ago, I started a Google Summer of Code project working on a linker for Perl 6 user programs . Getting started on a new project with a new group of people is always hard, primarily because it can be hard to figure out where to start or who to reach out to. This GSoC project has been no exception. That being said, the Perl 6 community is one of the kindest, most helpful online communities I've run into and appears to have no qualms assisting a new contributor in getting up to speed. So far, the biggest challenges I've run into have been figuring out what I didn't know about how to get started, figuring out IRC, and getting my development environment set up. Figuring out what I didn't know Perl 6 is a big language. Prior to this summer, I had very little exposure to Perl, Perl 6, or interpreted languages in general. Thankfully, Perl 6 has pretty substantial documentation, and the source code is pretty well commented too. Information on linkers is har...