Self introduction, GSoC 2017

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Self introduction, GSoC 2017

Vasantha Ganesh
Hello all,
  I am Vasantha Ganesh Kanniappan. I am a free software enthusiast. I
am doing my Bachelors in Computer Science Engineering from Amrita
School of Engineering, Coimbatore, Tamil Nadu, India.

I am interested in working on `Easier Access to Native Libraries using JNA/JNR'.

Appropriate skill set:
I am a languages guy. I have tried to write a parser for subset python
with bison and flex (https://github.com/vasanthaganeshk/pymirchi). I
have written a toy JVM. I used Javassist for parsing the bytecode. The
JVM supported 26 op-codes and I used reflection library for calling
builtin functions. The JVM was capable of doing some basic arithmetic
and some printing. I did it as a learning exercise. The code is here
(https://github.com/vasanthaganeshk/orange-virtual-machine). I took
SICP course from my school and learnt scheme on the way. I used Guile
scheme for solving the exercises. I learnt Java while writing the JVM.
I'm a functional programmer, I started out with Scheme and then jumped
to Haskell and I've used it for some time. I've taken a course in
Operating systems and I familiarized myself with some syscalls while
working on a Game Engine for an AI-Challenge
(https://github.com/arrow-/phoenix) for my University.

What I've done:
-> I forked and cloned Kawa.
-> I compiled it from source and ran the tests (master branch)
-> I tried to setup CI for Kawa and I'm getting some errors with make
(I learnt to use Docker for one of my projects and that was useful for
setting up CI).
-> I wrote hello world program in Kawa
-> I cloned the jnr-posix repo and generated docs(I've not read them yet).
-> I read the TODO page.

Things that I have to learn:
-> To use ant.
-> To use Autotools (I've written Makefiles for my previous projects though)
-> Writing docs with texi (I've been using MarkDown for everything)
-> To read docs for JNA and JNR.
-> To read Kawa docs.

Please help me with the following:

I encountered some errors while trying to run `make'
(https://gitlab.com/vasanthaganeshk/Kawa/builds/12132613)

I need some docs telling what each directory contains and some
interesting files that I have to read. Probably I've missed it here
(https://www.gnu.org/software/kawa/ToC.html).

Before writing the proposal I would like to make contributions to get
familiarized with the repo.

From the TODO page `Remove pretty-print implementation in slib.'
seemed like the easiest. I do not know if this issue still exists but
if it does then it should exist in `Kawa/gnu/kawa/slib/testing.scm'.

I think I can also work on this `Compiler should use class-file
reading instead of reflection', but I have to read the docs for that.
If that is solved to, please suggest me some trivial tasks to get
started with.

Other than that, I have a blog here
(https://vasanthaganeshk.wordpress.com) and my repos on GitHub are
here (https://github.com/vasanthaganeshk).

My nick on Freenode is `GreySunshine'. There is #kawa on freenode but,
I don't know if we have an IRC channel because it was not mentioned
here (https://www.gnu.org/software/kawa/Mailing-lists.html).

Vasantha Ganesh K.
Reply | Threaded
Open this post in threaded view
|

Re: Self introduction, GSoC 2017

Per Bothner
On 03/13/2017 12:58 PM, Vasantha Ganesh wrote:
> Hello all,
>   I am Vasantha Ganesh Kanniappan. I am a free software enthusiast. I
> am doing my Bachelors in Computer Science Engineering from Amrita
> School of Engineering, Coimbatore, Tamil Nadu, India.

Welcome!

> I am interested in working on `Easier Access to Native Libraries using JNA/JNR'.

Cool.  Note I haven't used JNA or JNI myself, so we'd have to learn it together.

> Appropriate skill set:
> I am a languages guy. I have tried to write a parser for subset python
> with bison and flex (https://github.com/vasanthaganeshk/pymirchi). I
> have written a toy JVM. I used Javassist for parsing the bytecode. The
> JVM supported 26 op-codes and I used reflection library for calling
> builtin functions. The JVM was capable of doing some basic arithmetic
> and some printing. I did it as a learning exercise. The code is here
> (https://github.com/vasanthaganeshk/orange-virtual-machine). I took
> SICP course from my school and learnt scheme on the way. I used Guile
> scheme for solving the exercises. I learnt Java while writing the JVM.
> I'm a functional programmer, I started out with Scheme and then jumped
> to Haskell and I've used it for some time. I've taken a course in
> Operating systems and I familiarized myself with some syscalls while
> working on a Game Engine for an AI-Challenge
> (https://github.com/arrow-/phoenix) for my University.

That seems good.
>
> What I've done:
> -> I forked and cloned Kawa.
> -> I compiled it from source and ran the tests (master branch)
> -> I tried to setup CI for Kawa and I'm getting some errors with make

Oops. I checked in a fix for this.

> (I learnt to use Docker for one of my projects and that was useful for
> setting up CI).
> -> I wrote hello world program in Kawa
> -> I cloned the jnr-posix repo and generated docs(I've not read them yet).
> -> I read the TODO page.
>
> Things that I have to learn:
> -> To use ant.
> -> To use Autotools (I've written Makefiles for my previous projects though)
> -> Writing docs with texi (I've been using MarkDown for everything)

You don't necessarily need to learn all of these to work on Kawa :-)

> -> To read docs for JNA and JNR.
> -> To read Kawa docs.
>
> Please help me with the following:
>
> I encountered some errors while trying to run `make'
> (https://gitlab.com/vasanthaganeshk/Kawa/builds/12132613)

Fixed.

> I need some docs telling what each directory contains and some
> interesting files that I have to read. Probably I've missed it here
> (https://www.gnu.org/software/kawa/ToC.html).

Kawa is big and sprawling, based on 20+ years of development, and not
everything is in a logical place.

> Before writing the proposal I would like to make contributions to get
> familiarized with the repo.

That makes sense.
>
> From the TODO page `Remove pretty-print implementation in slib.'
> seemed like the easiest. I do not know if this issue still exists but
> if it does then it should exist in `Kawa/gnu/kawa/slib/testing.scm'.

I'm not sure how useful this is i terms of leaning the code-base, but it's
a start.  There is a non-trivial amount of work in terms of learning the
slib implementation, the native PrettyWriter.java implementation, and
how to re-implement the slib function using PrettyWriter.java.

> I think I can also work on this `Compiler should use class-file
> reading instead of reflection', but I have to read the docs for that.
> If that is solved to, please suggest me some trivial tasks to get
> started with.

It's probably to big for a familiarization exercise, plus I'm not
sure how useful it is.

One mini-project to consider is "Optional strict typing along with an
explicit dynamic type" if viewed as more exploration than a project.
Basically you'd add a --strict-typing flag, and have that change
the behavior of the checkType method InlineCalls.

Basically:

    if ((isStrictTyping() ? cmp <= 0 : cmp < 0)
        ...

and then see what happens.  Perhaps write a blog article about what you find.
You may need to to change the type default type (for parameters and
other declarations that don't have TYPE_SPECIFIED) from  Type.objectType
to LangObjType.dynamicType.

I don't know how workable or useful a --strict-typing flag would be,
but would be an interesting experiment, a good learning experience,
and without requiring too much time or knowledge.  I hope.

--
        --Per Bothner
[hidden email]   http://per.bothner.com/