En frontend för Python 3.x till GNU Guile

Bakgrund

GNU Guile är en implementation av Lisp-varianten Scheme, och är även det officiella extensionspråket för operativsystemet GNU. Guile är utformat för att vara enkelt att bädda in som extensionspråk i andra program.

Projektet har länge haft som uttalat mål att stöda flera olika skriptspråk. De sista åren har Guile emellertid tagit kvalitativa steg framåt. Bland annat har man nu stöd för andra språk än Scheme, bland annat Ecmascript. Stöd för både Emacs Lisp och Lua är redan under utveckling.

Python är ett annat populärt programmeringspsråk med flera implementationer och är välstandardiserat och -dokumenterat.

Projekt-/problembeskrivning

Syftet med kandidatarbetet är att implementera ett frontend för Python till GNU Guile. Syftet är att lära deltagarna mer om kompilatorer och den virtuella maskinen Guile. I projektet ingår att implementera en rimligt stor delmängd av Python.

Vi kommer kunna skriva Python direkt i Guiles REPL (Read-Eval-Print-Loop) där vi byter mellan olika språk interaktivt. För en användare av ett program som utökas med Guile innebär detta att hon plötsligt kan scripta programmet i Python.

Metod

Vi kommer att skriva en kompilator från Python till högnivåspråket Tree-IL som liknar Scheme väldigt mycket (tänk ungefär Scheme fast utan macron). Det finns färdiga front-ends som man kan lära sig av och ett aktivt community kring Guile.

Projektet kommer använda sig av de redan inbyggda modulerna för parsning och kompilering som finns i Guile. Det går också att bygga på de redan implementerade front-endsen och lära sig av dem. Av Python finns också en rad olika implementationer. Eftersom de är fri programvara kan vi studera dem fritt.

I projektet ingår bland annat att:

  • Sätta sig in i standard Python 3.x.
  • Implementera ett front-end med allt vad det innebär. Från början till slut: lexning, parsning etc. I detta strävas efter att använda Guiles färdiga verktyg i så hög utsträckning som möjligt. 
  • Kreativt lösa andra eventuella svårigheter som uppstår för att anpassa Python till Guile.

Samtidigt är det ett tillfälle för deltagarna att lära sig mer om hur processen med utveckling av fri programvara kan gå till i en kollaborativ miljö genom att studera och sätta sig in i Guile-communityn.

Önskat resultat

Målet är att koden ska hålla sådan hög kvalitet att den skulle kunna inkorporeras i den officiella versionen av GNU Guile.

Övrigt

När projektet är klart ska vi försöka få det inkluderat i den officiella versionen av GNU Guile så att vårt arbete är till direkt nytta för tiotusentals användare över hela världen. För att få källkoden inkluderad i den officiella versionen av GNU Guile måste man skriva över sin upphovsrätt till Free Software Foundation. De som är intresserade av att delta i projektet bör vara förberedda på detta okrångliga förfarande som beskrivs mer här:

http://www.gnu.org/licenses/why-assign.html

Projektkod DATX02_1225
Målgrupp D, IT
Gruppstorlek 4-6
Speciella förkunskapskrav

Objektorienterad programmering. Kurserna i Programspråk och Compiler Construction. Bra saker att ha är kunskap i Python och/eller Scheme eller intresse för att lära sig.

Handledare

Förslagslämnare:

Stefan Kangas (Student, garantiplats)
David Spångberg (Student, garantiplats)

Institution Data- och informationsteknik
Uppdaterad: 01 november 2011

 SÖK


Exjobb?
Har ditt företag förslag på exjobb att anmäla, skicka ett email!
DATA- OCH INFORMATIONSTEKNIK - Chalmers tekniska högskola och Göteborgs universitet - 412 96 Göteborg
Telefon: 031-772 1000