Skip to content

How to particpate ? #48

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
MaximumProgrammer opened this issue Jul 9, 2021 · 11 comments
Closed

How to particpate ? #48

MaximumProgrammer opened this issue Jul 9, 2021 · 11 comments

Comments

@MaximumProgrammer
Copy link

MaximumProgrammer commented Jul 9, 2021

Is it possbile to participate in anyway on this project like an open source project ?

Kind regards

@antoyo
Copy link
Contributor

antoyo commented Jul 9, 2021

Yes!
If you have any question, don't hesitate to ask me.

@gui2maraes
Copy link

What resources do you recommend to start contributing? I'm really looking forward to using this backend to compile for AVR targets, and would like to help where possible, but I have absolutely no idea how to get started. Thanks.

@MaximumProgrammer
Copy link
Author

Hello i am new to Rust but i have experience with other programming languages like C/C++ and Python, my background is mainly High Performance Computing, Compilier Optimizations and Programming on CPUs/GPUs.

Kind regards.

@antoyo
Copy link
Contributor

antoyo commented Jul 21, 2021

So, currently, a useful thing to do would be to run the tests (see instructions in the readme) and pick a failing one, debug it and fixing the issue in the backend.
The code generation is mostly done in this impl, so getting familiar with it would be a good first step.

Here's how I debug an issue:

  • I copy the failing test in an external project and run ../cargo.sh build from the gcc-test-backend directory.
  • I'll either look at the generated GIMPLE, but adding an environment variable in the previous command, as in CG_GCCJIT_DUMP_GIMPLE=1 ../cargo.sh build.
  • Or, I'll debug the generated program using gdb.

I can give you more details once you get more familiar with those steps and I can answer your questions, then.

Hope this helps.

(If you have any suggestion on how I could help you, please suggest them: it's a complicated project and I'm not sure how best to help you.)

@gui2maraes
Copy link

gui2maraes commented Jul 28, 2021

Ok, so I have a few questions regarding the project.

1: Where exactly does cg_gcc take place? Is it right after monomorphization?

2: If it does, can't we just "port" the already existing convertion to LLVM IR, but for GCC? I think a lot of the logic would be reusable, no?

3: Since libgccjit.so requires a different .so for every target, does the project needs to link to every libgccjit available at compile time, or is there a way to make this library resolution at runtime? For example, if I wanted to add a new target with libgccjit, would I need to recompile the project to link with the new library?

4: Since libgccjit is ABI stable, would it be as simple as compiling libgccjit for different targets, without any extra work from this project side?

Please tell if any question is unclear. English is not my first language, and I'm not familiar with some of these terms.

@antoyo
Copy link
Contributor

antoyo commented Jul 28, 2021

For #1, it is after monomorphization.

For #2, how is this different than this project?

For #3, it's not decided yet how we would do this, but there are ways like LD_LIBRARY_PATH to load another libgccjit.so at run-time.

For #4, Mostly, since we could use LD_LIBRARY_PATH. However, there might some weird architectures that don't support some integer types or have different ABI, so there might be some work needed either in this project or in rustc.

@MaximumProgrammer
Copy link
Author

It would be also cool to have a list for other people especially for things which are open and already at work.

Kind regards

@antoyo
Copy link
Contributor

antoyo commented Jul 31, 2021

@MaximumProgrammer You mean having GitHub issues for things to do and things being worked on?

@MaximumProgrammer
Copy link
Author

@MaximumProgrammer You mean having GitHub issues for things to do and things being worked on?

Yes exactly so other people can choose and participate maybe not each topic but great topics which are open like compiler optimization or finding bugs

@antoyo
Copy link
Contributor

antoyo commented Aug 12, 2021

Good. I'll start creating issues and tag some as good first issue.

@antoyo
Copy link
Contributor

antoyo commented Feb 1, 2022

I'll close this as I explain in my blog posts how to contribute.

@antoyo antoyo closed this as completed Feb 1, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants