Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
Rakudo SQUASHathon Guide
There are many different ways you can help. This page discusses some of them in detail.
Consider joining #perl6-dev and talking to humans. Chances are it will be much easier for you to join the channel and ask for guidance rather than read all the details that this page provides.
Table of Contents:
- Using RT
- Reviewing older tickets
- Hacking on Rakudo Compiler
Most actions with rakudo, nqp, and roast repos require a GitHub account, and chances are you already know how everything works there. However, Rakudo tickets are kept on https://rt.perl.org/, so this section describes how to perform some basic actions there.
Generally, you don't need to create a new account to use RT.
Creating a new ticket
Just send an emailed to “firstname.lastname@example.org” and a ticket will be created automatically. You can attach files and use any HTML formatting. You'll get a reply with the id of the ticket that you've just created.
Alternatively, if you managed to create an account on RT you can go to https://rt.perl.org/m/ and submit a ticket there.
Writing a comment
Writing a comment can be done by email too. Send your email to email@example.com and don't forget to include the ticket id in the title, for example “[perl #128520]”. Your comment will appear a few minutes later.
Alternatively, if you managed to create an account on RT then you'll be able to use the “Reply” button.
- Go to http://fail.rakudo.party/t/TESTNEEDED
- Any ticket in that list is practically a ticket for roast, so in most cases that's what you would be submitting a PR for. See roast/CONTRIBUTING.md.
- In some (relatively rare) cases the behavior should not be spec-ed in roast, but instead tests have to be added to rakudo. See rakudo/tree/nom/t and rakudo/CONTRIBUTING.md.
Reviewing older tickets
Go to https://fail.rakudo.party/ and scroll to the second part of the page. Start going through the tickets one by one.
- If the ticket has steps to reproduce the problem, try to reproduce it with the latest rakudo. Chances are it is resolved already. If it is, write a comment describing the current behavior. Otherwise consider leaving a comment saying that the issue is still reproducible. If it seems that the issue is resolved then go to the next step.
- If you have permissions, mark the ticket with
testneededtag. If not, ask people on #perl6 or #perl6-dev to do that for you. Please note that almost any ticket needs tests before we can close it.
- There is a chance that not only the issue is already resolved, but there are tests for it too. To find out you will have to bisect rakudo to find the commit that resolved the issue. You don't have to do it, but sometimes it helps a lot. Please don't bother doing it manually, there's a bot that can do it for you. Next section will describe how to do that.
We will take an existing ticket as an example.
- If the ticket says that
say (10 ** -1).WHATused to produce
(Rat), then we can first use
committable6to get a bigger picture:
<AlexDaniel> committable6: releases say (10 ** -1).WHAT
<committable6> AlexDaniel, ¦releases (23 commits): «(Rat)»
What happened? Most *ables use 2015.12 as a starting point, so anything older than that will require you to be a bit more specific (it will also take a few more seconds, so be patient):
<AlexDaniel> committable6: all say (10 ** -1).WHAT
<committable6> AlexDaniel, https://gist.github.com/48f7b9488960ff04088d20d710626c5d
- According to the output from
committable6, we know that the relevant change happened somewhere between 2015.04 and 2015.05. Now we can easily bisect it:
<AlexDaniel> bisectable6: old=2015.04 new=2015.05 say (10 ** -1).WHAT
<bisectable6> AlexDaniel, Bisecting by output (old=2015.04 new=2015.05) because on both starting points the exit code is 0
<bisectable6> AlexDaniel, bisect log: https://gist.github.com/d0b3f970a3b8c6f2499705c197f5ae07
<bisectable6> AlexDaniel, (2015-05-18) https://github.com/rakudo/rakudo/commit/563abdd46845d70483a21180c817de516003309c
- If we have some doubts on whether that result is what we need, we can double check. You can append
^to a git sha and it will give you the parent of that commit. So we want to check the output on
<AlexDaniel> committable6: 563abdd4684^,563abdd4684 say (10 ** -1).WHAT
<committable6> AlexDaniel, ¦563abdd4684^: «(Num)» ¦563abdd: «(Rat)»
This confirms the result from bisectable.
- Sometimes the commit message will mention the ticket number. If so, then we can go to that ticket and see if there are tests for it already and if these tests cover the ticket that we were reviewing. In this particular case we are out of luck, so we just have to leave a comment saying that the fix was bisected to 563abdd4684.
Hacking on Rakudo Compiler
See Hacking on Rakudo Compiler video.
You can try looking through LHF (long-hanging fruit) tickets. Some of these tickets have clues on how the ticket can be resolved, sometimes even with special notes for SQUASHathoners. That being said these are resolved very quickly, so chances are you'll have to find a “normal” ticket to work on.