Posts

Showing posts with the label module

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...

Flags and Syscalls and Modules, Oh My!

Image
Hello! I am a CS student working on a GSoC proof of concept to modify perl6 to create executable binaries. This blog documents my journey and struggles. There are likely more correct and maintainable ways to do what I've done so far. If you know a better way, please let me know in the comments section. I have a couple of updates this week! I've gotten --compile working and have made progress on packaging the code for Modules inside the ELF (though I haven't quite coaxed things into using those packaged modules). Fair warning, this post is going to be a bit long. If you want to hear about the changes I made to NQP , jump to Adding the --compile functionality . If you want to hear about the changes I made to p6_linker , jump down to Altering the p6_linker.  If you want to hear about the progress towards module functionality, jump down to Module troubles. If you just want a brief summary of what I did, jump down to In summary. And as always, if you want to hear about...

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...