This is the mail archive of the kawa@sourceware.org mailing list for the Kawa project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Self introduction, GSoC 2017


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
per@bothner.com   http://per.bothner.com/


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]