Name Alexander Pashaliyski
Background: I am 24 and currently studying my Master's Degree in "Sofia University", Sofia, Bulgaria (GMT+2). Specialty: Protection of Information in Computer Systems and Networks. I have Bachelor's Degree in "Informatics" in "Plovdiv University", Plovdiv , Bulgaria. I have a lot of experience with Debian - I have been working 3 years for a big German hosting company (EUROWEB), when I was in Plovdiv, as System Administrator and our systems were based on Debian. I also got some experience with Debian's packaging system. In the past, I have made some Debian packages for FreeSwitch and some other applications.
- In the years I'm programming I got experience in different areas. I learned something new from every project I made in the past.
- About my experience with C/C++:
- Recently I have made a backup system for backuping and restoring block devices on Virtual Machines. The backups are incremental. I have used many different technologies and some libraries like librsync. I have a lot of experience making client-server applications, using different technologies - for file descriptor selection (like epoll, select), with posix threads and fork. I have also made modifications to some open source applications to fit my needs, like making privilege separation for unfsd, making advanced file deletion rules for pure-ftpd and making filtering proxy for postfix, that records all the incoming and outgoing emails to mysql database. In many of my projects I have been using different compilers, mainly gcc (I'm using clang for better error messages). I also have some experience with the Intel compiler - mainly for compiling mysql, for which it's recommended. As a debugger, I use gdb. I have experience creating Makefiles with automake and autoconf.
- About my experience as System Administrator:
- By working as a system administrator in the past, I got a lot of experience with most of the services that hosting companies provide - mainly with separation of the resources between different users and services. As scripting languages I use bash, awk, python and perl. I have made many chrooted application environments for security reasons.
Project title: Clang support for build services
Project details: This project is about extension of the Debian infrastructure with ability to build packages with clang. The key idea is to have an alternative way to build packages and easily switch between clang and gcc/g++. Clang is faster than gcc, uses less memory, and produces faster code. It is getting better with time. It is available under the BSD license. It is well documented. It can help programmers find and analyze easily their errors, because clang has much more detailed error and warning messages and it allows better diagnostics. It also provides a good alternative for programmers using gcc in the coding and compiling processes. It enforces better code quality.
- In the compiling process, compiler choice is usually done by setting the environment variable CC. When Makefile is generated, it contains initialization of the CC variable based on the current environment. If CC is not set, the default compiler is gcc. CC is always used by make. I proved this with tests (I set CC=/usr/bin/clang).
- There must be an easy way to switch the default compiler between gcc/g++ and clang. One way would be by issuing a command like
- "dpkg-reconfigure default-compiler". I think that debuild, sbuild can be changed to take optional compiler argument (something like --clang --gcc). If this argument is not specified, the default compiler is used (according to CC)
- Also I think that when the default compiler is set to clang, some special cases should be checked.
- Example: There is gcc hard coded in the Makefile. In this case there should be a dialog box that offers several options to choose from:
- 1. Leave gcc in this line.
- 2. Change gcc with the CC variable.
- 3. Edit with the default text editor.
- I have seen the 3rd option in many applications, like svn or crontab. When some file modification is required, the default editor is launched to modify the file.
- Also, I'll check what are the compiling problems of the current packages that can't compile by just changing gcc with clang. This way I'll see what checks for special cases to implement.
Synopsis: This project will integrate clang as part of Debian.
Benefits to Debian: The most obvious benefits of using Clang are performance and detailed error and warning messages. Debian will be most liked environment for more developers. Clang will improve the quality of Debian's packages.
- Support clang for building services.
- An easy way to switch between the gcc/g++ and clang compilers.
- Many Debian packages will be compiled with clang.
- April 24 - May 20: Pre-development phase: Create and configure developer environments, getting to know with the Debian repositories, making clear commiting process and some details of the project with my mentor
- May - August: The main coding will be separated on two phases - It's going to take about 2 month.
- The first phase It going to include modify build services of Debian, creating automation scripts for compiling and building with all Debian packages clang instead of gcc.
- The second phase is going to be Create a easy way to switch of compiler between gcc and clang.
- August 13 - August 24 I'm going to need for testing purposes, to make tests for the building services and to fix some bugs in the development process.
Exams and other commitments: I have no exams.
Other summer plans: During the Summer I will have no job nor vacations and it would be great if I could work for Debian and join the community.
Why Debian?: I am using Debian since Woody. I am using it on most of the servers and workstations I administrate.
- I am not going to apply to any other project.