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


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