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 submitted my official proposal on Melange:

https://www.google-melange.com/gsoc/proposal/public/google/gsoc2014/panzone/5629499534213120

If anyone have any advice please tells me about it.

2014-03-07 23:05 GMT+01:00 Andrea Francesco Iuorio
<andreafrancesco.iuorio@gmail.com>:
> I'm doing a little up because this Monday the GSOC opens the student
> applications and i want try to have any possibile feedback before my
> official submission. I thank anyone who read my proposal.
>
> 2014-02-28 19:50 GMT+01:00 Andrea Francesco Iuorio
> <andreafrancesco.iuorio@gmail.com>:
>> 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
>
>
>
> --
> Andrea Francesco Iuorio
> Student in Computer Science, Università degli Studi di Milano
> andreafrancesco.iuorio@gmail.com - GPG Key



-- 
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]