Hello everyone, I have a couple of questions about good project ideas for GSoC because I'm kind of stuck thinking what I should do. First of all, allow me to introduce myself - I'm Alex Lorenz, a Comp Sci student from Ireland. I would like to participate in GSoC this year, and I would love to do something for LLVM, because it's a great project. I am familiar with LLVM api, as last year I wrote a compiler(for fun/education) for my own language which used LLVM as a backend. I have a good experience with C++(started self taught, more than 5 years ago), and I have used it in several freelance projects and many of my own. However, I am not sure what my project should be. It would be interesting to work on optimizations and/or code generation for LLVM, but I have no idea what a good project for that would be. The Open Projects page mentioned LLVM Superoptimizer, so would this be a viable project that would benefit LLVM? It also mentions writing a frontend for another language, and I think this would be a really good project, but there are so many languages that I'm not sure which one to choose - perhaps Go or maybe even http://magpie-lang.org/? Another idea that I had for the project would be live editing/compilation - probably for C/C++. The application is compiled using clang and ran with an injected initialization code. Then, when a source file is modified, a filesystem watcher or an IDE plugin notices this change. After that a diff is performed on the file and clang is used(somehow) to see if this edit can be injectected into the running application - basically it checks if the edit is inside a non-inlined non-lamba function(s). The code that was injected at the initialization of the application started an IPC thread to communicate with the hypervisor which does the modification watch and file diff. After the diff the hypervisor uses clang and LLVM to compile the modified function(s) with relative addressing and sends it to the application IPC thread which copies the instructions into memory which is then marked as executable. The application also receives addresses of the modified functions which are somehow obtained from the initial compilation. Then the IPC thread pauses all other threads in this process and writes a jump to new address at the start of each modified function. It sounds quite complicated and ambitious, and I'm not sure if it really can be done, so maybe someone can correct me? I'm open to any other suggestions as well, so if you have any please post them. Thanks in advance. -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20130412/d7fa2cee/attachment.html>
Hi, 2013/4/12 Alex L <arphaman at gmail.com>> Hello everyone, I have a couple of questions about good project ideas for > GSoC because I'm kind of stuck thinking what I should do. > > First of all, allow me to introduce myself - I'm Alex Lorenz, a Comp Sci > student from Ireland. I would like to participate in GSoC this year, and I > would love to do something for LLVM, because it's a great project. I am > familiar with LLVM api, as last year I wrote a compiler(for fun/education) > for my own language which used LLVM as a backend. I have a good experience > with C++(started self taught, more than 5 years ago), and I have used it in > several freelance projects and many of my own. > > However, I am not sure what my project should be. It would be interesting > to work on optimizations and/or code generation for LLVM, but I have no > idea what a good project for that would be. The Open Projects page > mentioned LLVM Superoptimizer, so would this be a viable project that would > benefit LLVM? It also mentions writing a frontend for another language, and > I think this would be a really good project, but there are so many > languages that I'm not sure which one to choose - perhaps Go or maybe even > http://magpie-lang.org/? >In the things that I think may be worthwhile for LLVM fame is Fortran. Complicated to do, but even just Fortran77 would be a tremendous achievement.> Another idea that I had for the project would be live editing/compilation > - probably for C/C++. The application is compiled using clang and ran with > an injected initialization code. Then, when a source file is modified, a > filesystem watcher or an IDE plugin notices this change. After that a diff > is performed on the file and clang is used(somehow) to see if this edit can > be injectected into the running application - basically it checks if the > edit is inside a non-inlined non-lamba function(s). The code that was > injected at the initialization of the application started an IPC thread to > communicate with the hypervisor which does the modification watch and file > diff. After the diff the hypervisor uses clang and LLVM to compile the > modified function(s) with relative addressing and sends it to the > application IPC thread which copies the instructions into memory which is > then marked as executable. The application also receives addresses of the > modified functions which are somehow obtained from the initial compilation. > Then the IPC thread pauses all other threads in this process and writes a > jump to new address at the start of each modified function. It sounds quite > complicated and ambitious, and I'm not sure if it really can be done, so > maybe someone can correct me? > > I'm open to any other suggestions as well, so if you have any please post > them. > Thanks in advance. > > _______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev > >-- Information System Engineer, Ph.D. Blog: http://matt.eifelle.com LinkedIn: http://www.linkedin.com/in/matthieubrucher Music band: http://liliejay.com/ -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20130412/bf17b854/attachment.html>
2013/4/12 Matthieu Brucher <matthieu.brucher at gmail.com>> Hi, > > > 2013/4/12 Alex L <arphaman at gmail.com> > >> Hello everyone, I have a couple of questions about good project ideas for >> GSoC because I'm kind of stuck thinking what I should do. >> >> First of all, allow me to introduce myself - I'm Alex Lorenz, a Comp Sci >> student from Ireland. I would like to participate in GSoC this year, and I >> would love to do something for LLVM, because it's a great project. I am >> familiar with LLVM api, as last year I wrote a compiler(for fun/education) >> for my own language which used LLVM as a backend. I have a good experience >> with C++(started self taught, more than 5 years ago), and I have used it in >> several freelance projects and many of my own. >> >> However, I am not sure what my project should be. It would be interesting >> to work on optimizations and/or code generation for LLVM, but I have no >> idea what a good project for that would be. The Open Projects page >> mentioned LLVM Superoptimizer, so would this be a viable project that would >> benefit LLVM? It also mentions writing a frontend for another language, and >> I think this would be a really good project, but there are so many >> languages that I'm not sure which one to choose - perhaps Go or maybe even >> http://magpie-lang.org/? >> > > In the things that I think may be worthwhile for LLVM fame is Fortran. > Complicated to do, but even just Fortran77 would be a tremendous > achievement. > > >> Another idea that I had for the project would be live editing/compilation >> - probably for C/C++. The application is compiled using clang and ran with >> an injected initialization code. Then, when a source file is modified, a >> filesystem watcher or an IDE plugin notices this change. After that a diff >> is performed on the file and clang is used(somehow) to see if this edit can >> be injectected into the running application - basically it checks if the >> edit is inside a non-inlined non-lamba function(s). The code that was >> injected at the initialization of the application started an IPC thread to >> communicate with the hypervisor which does the modification watch and file >> diff. After the diff the hypervisor uses clang and LLVM to compile the >> modified function(s) with relative addressing and sends it to the >> application IPC thread which copies the instructions into memory which is >> then marked as executable. The application also receives addresses of the >> modified functions which are somehow obtained from the initial compilation. >> Then the IPC thread pauses all other threads in this process and writes a >> jump to new address at the start of each modified function. It sounds quite >> complicated and ambitious, and I'm not sure if it really can be done, so >> maybe someone can correct me? >> >> I'm open to any other suggestions as well, so if you have any please post >> them. >> Thanks in advance. >> >> _______________________________________________ >> LLVM Developers mailing list >> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu >> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >> >> > > > -- > Information System Engineer, Ph.D. > Blog: http://matt.eifelle.com > LinkedIn: http://www.linkedin.com/in/matthieubrucher > Music band: http://liliejay.com/ >I had a quick read through the Fortran 90 specification, and I must say I would be able to write a frontend for it, although arrays and io would make it harder. But isn't Fortran already supported with dragonegg? -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20130412/bb744d55/attachment.html>