Skip to content
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

Best way of easing into contributing to this repo #59

Open
hhamud opened this issue Feb 9, 2024 · 6 comments
Open

Best way of easing into contributing to this repo #59

hhamud opened this issue Feb 9, 2024 · 6 comments

Comments

@hhamud
Copy link

hhamud commented Feb 9, 2024

The question is in the title.

What are some good easy issues that I can help tackle?.

@CeleritasCelery
Copy link
Owner

Hi I am glad you have interest in the project! It looks like you already have some interpreter and Rust experience with your flop project. I downloaded that and played around with it for a while.

The best way to contribute depends on what your interests are. Probably the easiest thing to start on would probably be defining some additional builtin functions. Emacs has ~1500 builtin functions, and we only have around 200 defined so far. I think the easiest to tackle would be floatfns or fileio.

For example here are some float functions we are missing:

acos
asin
atan
cos
sin
tan
isnan
copysign
frexp
ldexp
exp
expt
log
sqrt
abs
logb
ceiling
round
truncate
fceiling

You can see the functions we have defined in src/floatfns.rs

rune/src/floatfns.rs

Lines 23 to 29 in 01befb4

#[defun]
fn float<'ob>(arg: Gc<Number<'ob>>, cx: &'ob Context) -> Gc<Number<'ob>> {
match arg.untag() {
Number::Int(i) => cx.add_as(i as f64),
Number::Float(_) => arg,
}
}

Essentially we write the function and add the #[defun] proc macro to the top. We also need some tests for those functions.

In fileio these functions are needed and should be easy to implement. The current ones are in src/fileio.rs

find-file-name-handler
file-name-directory
file-name-nondirectory
directory-file-name
file-name-concat
file-name-case-insensitive-p
file-name-absolute-p

However if there are other things that you are interested let me know and I can show you how to contribute to that area. There is still a lot to do!

CeleritasCelery pushed a commit that referenced this issue Mar 21, 2024
@Ki11erRabbit
Copy link
Contributor

Ki11erRabbit commented May 31, 2024

Could I also get some guidance?
I will be having a period of time where I will neither be in school nor have a job for the summer so I thought I would contribute to this project as the next best thing.

@CeleritasCelery
Copy link
Owner

Hi @Ki11erRabbit , I am happy to help! I added a CONTRIBUTING file that has some (hopefully) helpful information. I think the easiest way to contribute would be to port some C functions to Rust, and I have provided some examples in that document. But really the best thing is for you to tell me your interests and we can help guide you in that direction.

@Ki11erRabbit
Copy link
Contributor

Hi @Ki11erRabbit , I am happy to help! I added a CONTRIBUTING file that has some (hopefully) helpful information. I think the easiest way to contribute would be to port some C functions to Rust, and I have provided some examples in that document. But really the best thing is for you to tell me your interests and we can help guide you in that direction.

I currently just want to get my toes wet before I try to tackle anything big. I attempted to try to port charset.c over but I ran into some issues with not knowing what was the right Rust functions to call so I want something simpler before I make another attempt. Is that good enough information?

@CeleritasCelery
Copy link
Owner

That works!

I think some easy one would the string functions or the time functions. Let me know if you need help looking at the details of any of them.

@Ki11erRabbit
Copy link
Contributor

Thank you, I'll take a crack at it.

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