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> έγραψε: