[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [IMPORTANT] more ideas by today
From: |
Per Bothner |
Subject: |
Re: [IMPORTANT] more ideas by today |
Date: |
Wed, 22 Feb 2017 20:53:24 -0800 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.7.0 |
Attached are some addition to Kawa. You can write:
Mentors: Per Bothner and Jamison Hope
Then after the existing:
Kawa maintains a list of ideas here:
http://www.gnu.org/software/kawa/Ideas-and-tasks.html.
Add:
Thee following seem most suitable for GSoC:
and the text from the attachment.
--
--Per Bothner
address@hidden http://per.bothner.com/
-
Run interactive process in separate Java Virtual Machine:
When developing and testing it is useful for the
REPL to support hot-swapping (replacing functions on-the-fly) and debugging.
The main goal being able to smoothly reload changed modules
(files or functions), and have other modules not break.
Debugging (such as setting breakpoints) would not be a priority
for this project, but could be a follow-on project.
Skills: Should be experienced with Java, and interested in learning
about JVM TI and similar low-level parts of the platform.
Difficulty: Challenging, but you can study
how Java-9's new jshell
uses the JVM TI.
- Typed/optimized arithmetic with units:
Kawa support units (such as
cm^2
for square centimeters)
and quantities (such as 4cm^2
).
The idea is define a syntax for type for a quantity with a specific unit,
for example quantity[cm^2]
.
The compiler would type-check use of such types,
and use them to generate primitive arithmetic.
Skills: Need good Java experience, and somewhat familiar with the
Java Virtual Machine.
You will need to become comfortable reading javap
output.
Difficulty: Modest.
- Easier access to native code using JNI:
The traditional way to access native (C/C++) functions is using JNI,
but it's very awkward.
JNA and JNR are much easier to use.
This project would design and implement an easy-to-use Kawa wrapper for
for JNR. You should study existing JNR wrappers, such as that for JRuby.
Difficulty: Medium. Need to study existing wrappers and "foreign
function interfaces" (in multiple languages) and design one suitable for Kawa.
Some Scheme (Kawa) experience would be helpful.
- Improve IDE support:
There is some IDE support for Kawa, but it is old, incomplete,
and/or poorly documented.
One possible project would focus on research and documentation:
evaluating options
(using NetBeans, Eclipse, IntelliJ, or an Emacs package);
seeing what if anything works (or can be made to work with modest
effort); and documenting it.
Alternatively, if you have a favorite IDE/Editor and want to learn
how to extend it, you can focus on that.
Skills: Solid experience with Java and at least one IDE for the Java platform.
Difficulty: Modest. This can be very variable.
- Update XQuery implementation:
Kawa includes a mostly complete implementation
of the 1.0 version of XQuery,
a functional language for working with XML and similar data.
However, XQuery has added major feature since then, including grouping and
updates.
Adding some of these features to the Kawa-XQuery implementation would
be desirable.
Skills: Comfortable with both Java and XML technologies.
Interested in learning more about the latter.
Difficulty: Depends on what features you want to tackle.
- Use MethodHandles and invokedynamic
Java-7's invokedynamic and MethodHandles were intended
to improve the performance of dynamic languages.
See JSR 292
and the Da Vinci Machine Project.
Kawa makes very limited use of these, focusing on compile-time optimizations,
but could do more. For example we
can start by optimizing arithmetic when the types are unknown
at compile-time. They could make implementing
generic functions (multimethods) more efficient.
Skills: Very solid Java knowledge, and willing to learn and use complex APIs.
Difficulty: High.