Projects for the Google Summer of Code
Main page: Contests
This page should list ideas of projects to be implemented in the Google Summer of Code, provided that we get funding. Tasks can be related to Free Pascal, Lazarus and the libraries deployed with them.
Tasks for the Free Pascal Compiler
Add a new target in Free Pascal for Android support
Currently Android applications written in Free Pascal use the Linux target, but this is bad because changes in the Linux target sometime break Android support and also because in basic libraries it is not possible to differentiate between Android and Linux. If the differentiation is implemented as an IFDEF then the same compiler would not be able to target both Linux and Android, so that's why a new target is a good idea. This new target can share the majority of it's code with the Linux RTL but it should contain all necessary adaptations to work correctly for Android.
See also: Custom_Drawn_Interface/Android#Free_Pascal_Bugs_on_Android_Support
Mentor: ?
Support for dynamic linking packages
This task would involve adding support for the compiler to Delphi-style dynamic packages, which are compiled as libraries and then share the same RTL.
This question is extensively described here: packages#Delphi_packages
Mentor: ?
Finish the MIPS port
A large body of code is already present in the compiler, now fine tunning and finishing is required. The passing criteria would be being able to to run Lazarus without problems on the platform. We have 1 MIPS device available.
Mentor: Florian?
Implement support for the extended RTTI
Delphi 2010 introduced an enhanced RTTI system that adds Attributes (similar to Java Annotations), an type-value framework (TValue) and ability to easily call methods with parameters (through TRttiMethod.Invoke).
The task would consist of implementing at least the Attributes and TValue support
More info on the RTTI features:
http://www.malcolmgroves.com/blog/?p=476
http://www.malcolmgroves.com/blog/?p=530
http://robstechcorner.blogspot.com/2009/09/so-what-is-rtti-rtti-is-acronym-for-run.html
Mentor: ?
Implement anonymous methods
Anonymous methods (aka closures) feature was introduced in Delphi 2009
Mentor: ?
Tasks for Lazarus
FPVectorial - Implement a CorelDraw importer
A importer capable of reading the CorelDraw format would be highly desirable for many users of the FPVectorial Vectorial Graphics reading/writing and manipulating library. A initial implementation is already available in our subversion, but it hasn't even got past decompressing the file contents. A large database of CDR files can be found in the the web, which can be used as a test suite to test the reading of the files. There is no documentation about the CDR file format, but there are some free software projects written in other languages which can read it. They are, however, unsuitable for being used in Free Pascal application because external dependencies are highly undesirable, so we wish for a 100% Object Pascal solution. The applicant should read and understand how another project reads the CorelDraw files and then implement our own reader module in FPVectorial. The target version would initially be CorelDraw X13, but if the task proves easier then expected it might be expanded for other versions as well.
More information here: fpvectorial#CorelDraw
Mentor: Felipe Monteiro de Carvalho
PasFreeType - Implement large new parts of the Pascal text rendering library
The original FreeType was written in Pascal and we have resuscitated it. In this bounty the student should implement large new parts not only for glyph drawing of truetype fonts but also true text layouting including arabic support, chinese support, etc. It should be able to draw texts, calculate the partial widths of a text, calculate the metrics of texts (width, height, ascent, etc) and in general be able to execute all tasks which are required by the Lazarus Component Library for text drawing. This task should also include integrating it into the LCL-CustomDrawn widgetset to enable text support on it in all platforms.
More information here: Custom Drawn Interface and PasFreeType
Mentor: Felipe Monteiro de Carvalho