This is the mail archive of the
kawa@sourceware.org
mailing list for the Kawa project.
Re: Self introduction, GSoC 2017
- From: Per Bothner <per at bothner dot com>
- To: Vasantha Ganesh <vasanthaganesh dot k at gmail dot com>, kawa at sourceware dot org
- Date: Mon, 13 Mar 2017 15:11:16 -0700
- Subject: Re: Self introduction, GSoC 2017
- Authentication-results: sourceware.org; auth=none
- References: <CAL0TjKqjx1CwD0-tGdhdREkrtWZiu-AZ5uqMKZz3pSw7UsR7fA@mail.gmail.com>
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/