Release Party!
The Junicon Release Party will develop runtime system functions
and other bugfixes and enhancements for Junicon, UI's Java
reimplementation of the Unicon programming language (see junicon.sourceforge.net and http://unicon.org). The goals of this project
include one or more of:
- develop a set of Unicon-compatible Java functions to perform string
analysis and other Unicon built-ins for use in the Junicon runtime system.
- fix bugs as needed in order to pass the "tests/general" validation suite
from the Unicon language distribution
- refine documentation as needed for a public release
- develop a binary installer(s) that work for Windows, MacOS, and Linux
- publically release the software, get T-shirts, bask in glory
The intended end result of this project will be open source code that
becomes part of Junicon's public distribution. Team
members will gain open-source development experience for their resume,
and a certain measure of internet immortality. Java, Git, and related tools
will be used.
Level 0: Where the Project is At Now
- Installable and runnable from SourceForge
- Implements all the "hard stuff": generators, backtracking, etc.
- Runs about half as fast as the native Unicon VM.
- Interactive interpreter (via Java+Groovy) or compile to Java
- Easy/seamless access to Java objects/methods!
- Lacks a lot of the Icon/Unicon built-in functions
Level 1: Change the Reds to Greens
Add/fix core Icon language features for release party 1; one can advertise
this on the Icon mailing list. A previous UI undergraduate research assistant
did some of this work and produced the following spreadsheet:
It is an interesting question whether every test must pass in order to call
this project a success. Some things, like calling C functions from Unicon,
seem kind of subsumed by being able to trivially call Java from Junicon.
Then again, Java has an interface for calling C functions, so why not?
Depending on staffing level and interest, one might stop here or consider
additional level(s):
Level 2: Support Posix Facilities
Add built-in functions that Unicon adds to Icon, e.g. for
directory access and permissions, TCP and UDP networking.
Level 3: Support Database Facilities
Add built-in functions that Unicon adds to Icon for SQL/ODBC
and GDBM database access.
Level 4: Support Unicon Graphics Facilities
Add built-in functions that Unicon adds to Icon, e.g. for
2D and/or 3D graphics, each of which is worth a release party.
Level 5: Port to Android, iOS etc.
This is probably beyond the scope of 480/481. But the Unicon Master Plan calls
for it to run everywhere. And a previous undergraduate research assistant has
done some preparatory work for a libGDX port that would hit these targets.