This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Gsoc 2014 project proposal


I improve my proposal with your suggestions, any other advices ?
Anything ? I really want to have your opinions.

Abstract: One of the biggest new feature in the new ISO C11 standard
is the new library for multithreading programming. This feature is
considered optional and it isn' t actually implemented, but it could
be benefitial for the GNU C Library, GNU and their users: developers
could write real standard multithreading application and normal user
could compile any C11 programs that follow the standard. This project
aims to create an ISO C11 multithreading library implementation for
the GNU C Library using pthread: pthread is the de-facto standard
library for multithreading programming and presents an implementation
for almost every important platform. This way we can have our library
working as soon as possibile on every pthread target.

Project Proposal

Name: Andrea Francesco Iuorio

Contacts: andreafrancesco.iuorio@gmail.com, panzone (IRC)

Project name: GNU C Library - ISO C11 Threads

Summary

GNU C Library provides a pthread implementation for multithreading
programming. With the introduction of C11, the ISO standard now
provides a specific library for some basic multithreading features
like thread handling, mutex managment and coditional variables. The
goal of this project is to implement the C11 multithreading standard
library using the GNU C Library pthread implementation: this way we
can move forward to C11 and, at the same time, we can have a working
implementation of C11 threads for every GLibC target.

Benefits

C11 provide a simple, portable and standard multithreading library.
With this project  the GNU C Library will have one of the more ( if
not the most ) important new feature aviable in the new C standard.
This means that developers can use the standard thread library during
development, making their program more portable and they can compile
any programs that use the standard multithreading library.

Deliverables

An ISO C11 thread library implementation ( in more detail, an
implementation of threads.h functions and data structures ). This
library should be somewhat indipendent from the rest of library (
althought it may exist an exception as i notice in the implementation
plan ) so it can be seen as an usefull increment to the existing GLibC
code.

Implementation plan

First, my other summer plans: I should take my bachelor of science on
the first/second week of July, so i' ll take one ( probabily two,
depending how the project is going ) day free in this period . Besides
that, i don' t have any other plans and i could garantee at least 40
hours weekly, possibly more.

Regarding the implementation plan, i' ll try to implement a single
function at time. My principal workflow will be write function ->
testing and documenting it -> work on the next function.

There a a little problem that must be solved during the design phase:
pthread isn' t part of C11 standard but, as i said, i want to use it
for my implementation. This could lead on a problem since for the
standard pthread functions names aren' t reserved so for using them in
my implementation i must reservate the pthread functions i' ll need
and i have to do it without breaking the pthread library. This could
be done changing the real function with a reservate version and create
an alias for the pthread original name. I know that some pthread
functions are already in this form so there isn' t any problem for
that but i should refactor the others before i can use them. Since
pthread is huge, i' ll only change the functions i' ll need for my
implementation. During the first part of my project i' ll analize
every threads.h functions for understanding what pthread functionality
i' ll need for the implementation .

For the coding work, i' ll iterate the following procedure for every
threads.h function:

1) Refactor the pthread functionalty i' ll need for this function

2) Implement the function

3) Write some tests for the glibc testcases and relative documentation.

At the start of every week i' ll decide with my mentor which functions
or data structures i' ll implement that week. I want to have a basic
thread and mutex managment implementation as soon as possibile so i'
ll give the priority to this functions: this way we can have some
basic multithreading programs working soon as possible and, as you can
see in the schedule below, i count to finish it before the mid-term
evaluation for having something that could be used in pratice ( for
basic programs ) in time for the evaluation. After that i' ll
implement the rest of the standard, probably in this order: mutex
types, conditional variables, thread storages  and one-time functions.

In more detail, i think to divide my time as follow:

March - 18 May

This period will be used to learn GNU codestyle conventions and
procedures for commits, testing ecc. ecc., the glibc code structure,
its pthread implementation and for reading the C11 reference. During
this period i' ll also analize every threads.h functions and types and
decide what pthread functionality i' ll need for the implementation of
every single function. I' ll stay in contact with my mentor for
helping me and evaluate my analysis.

19 May - 22 June

This period will be used for the basic implementation: thread data
structures, thread handling and mutex basic managment using the
procedure explained before.

N.B. 23 June - Mid term evaluation. My primary goal is to have a basic
and working function subset before the evaluation that, if possibile,
could pass the patch review.

23 June - 13 July

This period will be used for mutex types ( C11 possess three mutex
types ) and conditional variables. This way, at the end of this
period, we have all the functions to controll race codition expected
in the ISO standard.

14 July - 3 August

This period will be used for thread storage and one-time function
implementation.

I have a two-week emergency buffer for any problems that could emerge
during my work. If i finish my project before the deadline the
remaning time will be used for writing more tests, improve the manual
or other usefull work.

Communication

At the start of every week i' ll try to decide a weekly schedule of
features and functions which should be implemented in that week. For
this weekly meeting i think that email  could be a good way to mantain
a trace of what is doing and when is doing.

Beside that, i' ll work with IRC in idle , so my mentor could contact
me every moment.  I' m totally open for IRC meeting if there is any
necessity to clarify any aspects of my work.

For code review, i think that the best way is to use a personal public
repository: i can do my work more freely and my mentor ( and anyone )
could see my project in real time at any moment and eventually give me
feedbacks. When i' ll reach some important milestone i' ll submit a
patch using the standard GLibC commits procedure.

Qualification

I' m a forth year student in Computer Science in University of Milan.
For my thesis project i work on a runtime layer for modular exception
handling and two compilers: a bytecode compiler for an OO language and
a ( incomplete ) c-like compiler for the x86 architecture. I' m also
an author in a paper actually in review for ECOOP14. I start as a
personal project a simple implementation of the C89 standard for
Windows ( you can find on my github ) but i never finished it because
my thesis took me more than half of the last year. I love low-level
programming and i love simplicity and minimalism so it is natural that
i appreciate C language, its standard library and i think they should
be the basics that every programmers should know. You can now
understand why i want to work on the GNU C Library. I have a good C
knowledge, its standard library and, since i tried to work on portable
code on Windows i' m not completely new to pthread. I wrote some
compilers and i have read reference manuals for assembly and code
generation, but i never write a standard library for a language ( or a
library in general ) so this could be the perfect chance to make
experience in library development.

-- 
Andrea Francesco Iuorio
Student in Computer Science, Università degli Studi di Milano
andreafrancesco.iuorio@gmail.com - GPG Key


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]