2003 Grants - Third Quarter
PROJECT: To aid development of RTF parsing modules
DURATION: 3 months
Perl currently lacks decent RTF parsing modules. RTF::Tokenizer is a first step towards rectifying this situation, but still the situation remains. RTF is a ubiquitous format, and a format Perl is a good at parsing - it's unfortunate that RTF support is still poor.
- Finish and maintain RTF::Tokenizer
- Document and add tests to RTF::Parser
- Create RTF::Reader, a framework for building RTF translators, as laid out in Microsoft's RTF Spec
- Write numerous rtf translators based on RTF::Reader, but specifically rtf2txt, rtf2html and rtf2xml
- Create a suite of applications for handling RTF files
- Create http://rtf.perl.org/ a centre for Perl RTF modules and discussion
- Attempt to implement an RTF::TreeBuilder
PROJECT: to port the Parrot JIT to IA-64 and HPPA
DURATION: 12 months
Daniel is a C programmer is working on on improving Parrot. He is the author of the Parrot JIT engine, which now is running (some programs) at speeds close to C, and the goal is to make that number of programs higher.
Currently it will product output for the x86 on *BSD and Linux; ARM and PPC on Linux.
Make the JIT engine work on MIPS, HPPA and IA64. Continue with the development of it on ARM, alpha, PPC, i386 and SPARC. Keep enhancing the Parrot Debugger.
Make the Parrot engine output an executable, which follows on from his previous grant making the JIT output executables for x86 on Linux and BSD.
PROJECT: Internationalize Slash
DURATION: 3 months
Slash is the database-driven application server that powers slashdot.org and use.perl.org. It is currently the most widely used open-source Perl solution for such tasks, and also one of Perl's closest matches to Python's Zope/Plone content management system.
However, lack of internationalization and difficulty in configuration have seriously hampered Slash's adoption. The current way to localize Slash involves changing hard-coded strings inside template files (and occasionally programs). Each time a new version of Slash is released, previous localizations are rendered obsolete and need serious work to update them. Having done this three times for the Traditional Chinese language, I can testify that it is an extremely demanding task.
Slash does not allow users to choose their own display language; the entire site must use one set of language templates. This has hampered international users' participation in both Slash development and use.perl.org discussions.
- Attract more international contributors to use.perl.org and Perl development.
- Serve as an example for other web applications based on the Template Toolkit.
- Make slashdot.org and use.perl.org more accessible to non-English-speaking people, as well as people with disabilities, by adopting a CSS-based layout.
Modifications to Slash-2.3.x:
- Implement CSS-based and internationalized page templates.
- Chinese localization of said templates in PO format.
- Add an "Interface Language" option on the User Preferences page.
PROJECT: Rework Parrot packfile code to support multiple code segments
DURATION: ~2 Months 1
The objectives of this project are to rework the Parrot packfile code to deal with multiple code segments (e.g. for module loading and evaluation). This includes separate constant and fixup tables and reorganization of packfile structures with regard to multithreading (currently prederefenced and JIT data can't be shared between multiple threads).
Loading code at runtime is crucial for implementing "use The::Lib;" and similar constructs. This includes loading code in source or byte code form and evaluating dynamically created source code at runtime.
Rework and cleanup of the pack* source files, very probably resulting in all to be moved into its own sub-system directory within the Parrot framework. Separate global and per-thread data will be maintained.
1 The time frame may depend on work done probably by Dan Sugalski, as the necessary changes for multi-threading are not laid out yet.