New to LLVM contribution and open-source

Hi,

I’m Andre and new to LLVM in general as well as the open-source community. I’m not sure if this is the right platform to bring up my questions but here is a bit of background. I found a video that referenced high-performance algorithms used in LLVM (https://www.youtube.com/watch?v=vElZc6zSIXM).

When I saw this, I told myself that I want to work on high-performance projects because that’s the depth and fluidity of data structures and algorithms in projects I want to work on.

Going through the LLVM website and links has taken me down a rabbit hole I’m not sure where to start digging. I would like to work on a project that, in addition to my interests above, also allows me to use the latest C++ features.

I am looking for guidance and possibly mentorship on a good starting task. Looking at the beginner tags in the bug tracker website but it didn’t give me a great feel on what I wanted to work on. I also had more interest in bigger projects such as those listed https://llvm.org/OpenProjects.html#what.

From what I’ve seen, I think what I am interested in working on is the LLVM core but I’m open to suggestions for recommendations.

Thank you,

Hi Andre and welcome!

I’m relatively new to LLVM so I understand and I may be able to help. First of all, by reading your message, it seems that you want
to work on code that runs fast (i.e. high-performance data structures used in LLVM) and not necessarily code that produces fast code (e.g. LLVM passes).
Ask if that distinction was not clear.

For that, I guess that a good place to start is the Abstract Data Types: https://github.com/llvm/llvm-project/tree/master/llvm/include/llvm/ADT
IIRC, most DS’s that Chandler mentions are there. Now, how do you start there is a different story. At least, you don’t need to know
much about compilers. One thing I’d suggest is to do a search in the whole directory for FIXME or TODO. Then, try to find
some that (at least) seem easy and try to fix them. Then, submit a patch in the Phabricator: https://llvm.org/docs/Phabricator.html
Even if you get it wrong, people are very kind on the reviews.

Lastly, regarding this:

I would like to work on a project that, in addition to my interests above, also allows me to use the latest C++ features.

Definitely I don’t have a complete picture of LLVM to talk extensively about the topic but here’s the thing with C++. Applying
a lot of C++ intricacies does not help in the end and the reason is that the code becomes too complex and you
require the developer / reader to know all these intricacies. So, you’ll definitely find such in LLVM
but only when those are actually helpful. I’d suggest that if you want to take C++ on its limits, you can
try it on a personal project (that’s a personal opinion).

Please ask if anything was unclear.

Kind regards,
Stefanos Baziotis

Στις Κυρ, 1 Μαρ 2020 στις 7:39 μ.μ., ο/η Andre Marin via llvm-dev <llvm-dev@lists.llvm.org> έγραψε: